List概述
①List接口继承Collection接口;
②该接口属于数据结构中的线性结构,用户可以根据元素的整数索引来访问元素;
list接口实现类
1、ArrayList(数组线性表)
a. List 接口的实现类。其内部基于一个大小可变数组来存储
b. 允许存储 null 元素
2、LinkedList(双向链表)
a. List 接口的链接列表实现类
b. 允许存储 null 元素
3、Vector(向量)
a. 功能和ArrayList一样
b. 线程安全
4、 Stack(栈)
表示后进先出(LIFO)的对象堆栈
下面以ArrayList实现类为例演示List方法
一、add(Object element)
- add(Object element)向列表的尾部添加指定的元素
- size() 返回列表中的元素个数
- get(int index) 返回列表中指定位置的元素,index从0开始
import java.util.ArrayList;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
List<String> nameList = new ArrayList<String>();
nameList.add("张三");
nameList.add("王五");
int size = nameList.size();//获取列表中元素个数
System.out.println(size);//输出2
String name = nameList.get(1);
System.out.println(name);//输出王五
}
}
- add(int index, Object element) 在列表的指定位置(从0开始)插入指定元素
import java.util.ArrayList;
public class Test6 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("xubing");
list.add("xiaobing");
list.add(1, "Wang");
for (String name : list) {
System.out.println(name);
}
}
}
运行结果:
- set(int i, Object element) 使用元素element替换索引i位置的元素,并返回被替换的元素。
import java.util.ArrayList;
public class Test6 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("张三");
list.add("李四");
String name=list.set(1, "王五");
System.out.println("被替换的元素为: "+name);
System.out.println("替换成的元素为: "+list.get(1));
}
}
运行结果:
- clear() 从列表中移除所有元素
- isEmpty() 判断列表是否包含元素,不包含元素则返回 true,否则返回false
import java.util.ArrayList;
public class Test6 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("张三");
list.add("李四");
list.clear();
System.out.println(list.isEmpty());
}
}
运行结果:
- iterator() 返回按适当顺序在列表的元素上进行迭代的迭代器
import java.util.ArrayList;
import java.util.Iterator;
public class Test6 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("王五");
Iterator<String> listIterator=list.iterator();//<String>表示泛型,限定该遍历器中元素的数据类型
while(listIterator.hasNext()) {//判断是否有下一个元素
String name=listIterator.next();//获取下一个元素
System.out.println(name);
}
}
}
运行结果:
- contains(Object o) 如果列表包含指定的元素,则返回 true。当且仅当List集合中包含满足(o==null ? e==null : o.equals(e))条件的元素e时才返回true
- remove(int index) 移除列表中指定位置的元素,并返回被删元素,删除位置后面的元素(如果有)向前移动。
import java.util.ArrayList;
public class Test6 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("王五");
String name=list.remove(1);
System.out.println("被删掉的名字: "+name);
System.out.println("被删掉元素位置元素值为: "+list.get(1));
}
}
运行结果:
- remove(Object o) 从List集合中移除第一次出现的指定元素,移除成功返回true,否则返回false。当且仅当List集合中含有满足(o==null ? get(i)==null : o.equals(get(i)))条件的最低索引i的元素时才会返回true。
import java.util.ArrayList;
import java.util.List;
public class Test6 {
public static void main(String[] args) {
List<String> nameList = new ArrayList<String>();
nameList.add("张三");
System.out.println(nameList.isEmpty());//输出false
nameList.remove("张三");
System.out.println(nameList.isEmpty());//输出true
}
}
调用ArrayList类中remove(Object o) 方法删除对象的时候实质是o调用equals方法,如果为true则删除,否则不删除
注意:遍历集合的同时不能调用remove(Object o) 删除集合中元素,如下代码:
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Integer> scores = new ArrayList<Integer>();
scores.add(90);
scores.add(21);
scores.add(55);
scores.add(84);
for (Integer score : scores) {
if (score < 60) {
scores.remove(score);
}
}
}
}