List接口和常用方法
List接口基本介绍
List接口是Collection接口的子接口
- List集合类中元素有序 即添加顺序和取出顺序一致 且可以重复
- List集合中每个元素都有其对应的顺序索引 即支持索引
- List容器中的元素都对应一个整数型的序号记载其在容器中的位置 可以根据序号存取容器中的元素
- List实现类有 ArrayList LinkedList Vector
根据价格进行从小到大排序
{
List list = new ArrayList();
// List list = new LinkedList();
// List list = new Vector();
list.add(new Book("红楼梦", "曹雪芹", 100));
list.add(new Book("西游记", "吴承恩", 10));
list.add(new Book("水浒传", "施耐庵", 9));
list.add(new Book("三国演义", "罗贯中", 80));
list.add(new Book("西游记", "吴承恩", 10));
for (int i = 0; i < list.size() - 1; i++) {
for (int j = 0; j < list.size() - 1 - i; j++) {
Book b1 = (Book) list.get(j);
Book b2 = (Book) list.get(j + 1);
if (b1.getPrvice() > b2.getPrvice()) {
list.set(j,b2);
list.set(j+1,b1);
}
}
}
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
System.out.println("=========");
for (Object obj : list) {
System.out.println(obj);
}
System.out.println("=========");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
ArrayList 底层结构和源码分析
- 可以存放null并且多个
- ArrayList是由数组来实现数据存储
- ArrayList基本等同于Vector 除了ArrayList是线程不安全 执行效率高 在多线程情况下 不建议使用ArrayList
Vector基本介绍
- Vector底层也是一个对象数组
- Vector是线程同步的 即线程安全 synchronized进行修饰
LinkedList基本介绍
- LinkedList底层实现了双向链表和双端队列特点
- 可以添加任意元素 元素可以重复 包括null
- 线程不安全 没有实现同步
|