List接口继承Collection接口,该接口属于数据结构中的线性结构,用户可以根据元素的整数索引来访问元素,换句话说就是List集合是按照存储的顺序保存的,且从0开始数,说白了就是就相当于一个数组,不同的是数组要事先规定存储元素的个数,也就是提前定好容器的大小,而List却可以自由伸缩,想放几个元素就放几个元素。
List接口的实现类有四个:ArrayList(数组线性表)、LinkedList(双向链表)、Vector(向量)和Stack(栈)。
其中ArrayList和LinkedList中定义的方法多半是一样的,所以这里就只以ArrayList实现类为例演示List接口方法:
package gather;
public class Test{
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<String>();//此处需要引包,其中<String>称为泛型,用于限定该集合存的数据类型
names.add("张三");
names.add("李四");//用于给集合添加元素(按顺序依次在尾部添加)
names.add("王五");
int size = names.size();//用于获取集合元素个数
System.out.println(size);//3
//get(int index)返回指定位置的元素,从0开始
System.out.println(names.get(1));//李四
//isEmpty()用于判断集合中是否含有元素,没有为true,有为false
boolean flag = names.isEmpty();
System.out.println(flag);//false
//用加强循环(for-each)来遍历集合:
for (String str : names) {
System.out.println(str);
}
//张三 李四 王五
//add(int index, Object element)在指定位置“插入”元素,
names.add(1,"赵六");
//iterator()返回按适当顺序在集合中的元素上进行迭代的迭代器
//用迭代器遍历集合:
Iterator<String> iterator = names.iterator();//<String>依旧表示泛型,限定该遍历器中元素的数据类型
while(iterator.hasNext()){//hasNext()用判断集合中是否含有下一个元素
System.out.println(iterator.next());//next()用于指定下一个元素
}
//张三 赵六 李四 王五
//set(int index, Object element)将指定位置的元素替换为element
names.set(2,"孙七");
//用普通for循环来遍历集合:
for(int i; i<names.size(); i++){
System.out.println(i);
}
//张三 赵六 孙七 王五
//contains(Object element)用于判断集合中是否含有element元素,有则返回true,没有则返回false
System.out.println(names.contains("王五"));//true
//remove(int index)移除指定位置的元素,并返回被删元素
System.out.println(names.remove(1));//赵六
//remove(Object element)移除集合中第一次出现的指定元素(因为List集合可以保存重复的数据),移除成功返回true,否则返回false
System.out.println("孙七");//true
//clear()用于清空集合中的所有元素
names.clear();
System.out.println(names.isEmpty());//true
}
}