List集合,元素有序,并且每个元素都存在一个索引,元素可以重复
List集合特有的方法:
public void add(int index, Object element)
向集合指定索引index处,添加指定的元素element,原有元素依次后移
public Object remove(int index)
将指定索引index处的元素,从集合删除,返回值为被删除的元素
public Object set(int index, Object element)
将指定索引index处的元素,替换成指定的元素,返回值为替换前的元素
public Object get(int index)
返回列表中指定索引处的元素。
public ListIterator listIterator()
列表迭代器(List集合特有的迭代器)
List有三个子类,分别为:ArrayList,LinkedList,vector
1.ArrayList
ArrayList: 底层数据结构是数组,查询快,增删慢。线程不安全,效率高。
ArrayList存储自定义对象并遍历
public class 遍历Demo {
public static void main(String[] args) {
Student s1 = new Student("张", 18);
Student s2 = new Student("李", 19);
Student s3 = new Student("田", 20);
Student s4 = new Student("赵", 21);
Student s5 = new Student("孙", 22);
ArrayList list=new ArrayList();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
遍历方式1
Iterator a = list.iterator();
while (a.hasNext()){
Object obj1 = a.next();
Student stu1=(Student)obj1;
System.out.println(stu1.getName()+"--"+stu1.getAge());
}
遍历方式2
ListIterator b = list.listIterator();
while (b.hasNext()){
Object obj2 = b.next();
Student stu2 = (Student)obj2;
System.out.println(stu2.getName()+"--"+stu2.getAge());
}
遍历方式3
for (int i = 0; i < list.size(); i++) {
Object obj3 = list.get(i);
Student stu3 = (Student)obj3;
System.out.println(stu3.getName()+"--"+stu3.getAge());
}
}
}
2.LinkedList
LinkedList: 底层数据结构是链表,查询慢,增删快。
public class Demo {
public static void main(String[] args) {
LinkedList link = new LinkedList();
link.add(10);
link.add(20);
link.add(30);
link.add(40);
link.add(50);
link.add(60);
遍历
for (int i = 0; i < link.size(); i++) {
Object obj1 = link.get(i);
System.out.println(obj1);
}
向LinkedList集合末尾添加元素
link.addLast(5);
link.addLast(6);
link.addLast(7);
获取LinkedList集合首尾元素
Object a = link.getFirst();
Object b = link.getLast();
System.out.println(a);
System.out.println(b);
移除LinkedList集合首尾元素
Object x = link.removeFirst();
Object y = link.removeLast();
System.out.println(x);
System.out.println(y);
System.out.println(link);
}
}
3.vector
Vector: 底层数据结构是数组,查询快,增删慢。线程安全,效率低。
public class Demo {
public static void main(String[] args) {
Vector v1 = new Vector();
v1.add(10);
v1.add(20);
v1.add(30);
v1.add(40);
v1.add(50);
v1.addElement(60);
在指定索引处插入元素
v1.insertElementAt(10000,3);
根据索引替换元素,返回被替换过的旧元素
Object obj1 = v1.set(4,20000);
System.out.println(obj1);
System.out.println(v1);
Vector 中特有的迭代方式
Enumeration e1 = v1.elements();
while (e1.hasMoreElements()){
Object obj2 = e1.nextElement();
System.out.println(obj2);
}
}
}