List接口
- 特点:有序,有下标,元素可以重复
public static void main(String[] args) {
//先创建集合对象
List list = new ArrayList<>();
list.add("su");
list.add("wang");
list.add(0,"zhang");
System.out.println(list.size());
System.out.println(list);
// list.remove(0);
// System.out.println(list);
//遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
for (Object obj:list
) {
System.out.println(obj);
}
//迭代器
Iterator ite = list.iterator();
while (ite.hasNext()){
String next = (String) ite.next();
System.out.println("diedai "+next);
}
System.out.println("-----------------------------");
//列表迭代器
ListIterator l = list.listIterator();
//正向
while (l.hasNext()){
System.out.println(l.nextIndex()+":"+l.next());
}
//反向
while (l.hasPrevious()){
System.out.println(l.previousIndex()+":"+l.previous());
}
//获取元素位置
System.out.println(list.indexOf("wang"));
System.out.println(list.get(2));
}
public static void main(String[] args) {
List list = new ArrayList();
//添加数字类型(自动装箱)
list.add(22);
list.add(33);
list.add(44);
list.add(55);
//subList(),返回子集合
System.out.println(list.subList(1, 3));
list.remove((Object)22);
list.remove((new Integer(33)));
list.remove(Integer.valueOf(44));
System.out.println(list);
- 逆向输出需先将指针调到结尾
for (int i = 0; i < list.size(); i++) {
l.next();
}
while (l.hasPrevious()){
System.out.println(l.previousIndex()+":"+l.previous());
}
List实现类
- ArrayList(重点):
- 数组结构实现,查询快、增删慢;
- 运行效率快、线程不安全
- 源码分析
- 默认容量 DEFAULT_CAPACITY = 10
- 注意:如果没有向集合中添加任何元素时,容量是0,添加一个元素后,容量为10,之后每次扩容大小为原来的1.5倍
- 存放元素的数组 elementData
- 实际元素个数 size
add():
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
- Vector:
- 数组结构实现,查询快、增删慢;
- 运行效率慢、线程安全
public static void main(String[] args) {
//创建集合
Vector vector = new Vector();
vector.add("melon");
vector.add("apple");
vector.add("pie");
System.out.println(vector.size());
Enumeration elements = vector.elements();
while (elements.hasMoreElements()){
System.out.println((String) elements.nextElement());
}
System.out.println(vector.firstElement());
}
- LinkedList:
- 链表结构实现,增删快,查询慢
- 双向链表