(一)List的简单介绍
- List接口实现了Collection接口,在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。但是List接口仍然不能直接进行实例化。
- 有两种类型的List
(1) ArrayList 和 LinkedList是具体的类,可以对List接口进行实例化。
(2)ArrayList:在List的插入和移除元素时较慢,但是在随机访问方面要好一点。
(3)LinkedList:通过较低的代价在List中间进行插入与删除操作,提供了优化的顺序访问。但是随机访问方面比较慢。特性集较ArrayList更大。
(二)List中的一些方法
方法 | 作用 |
---|---|
add(某个对象) | 在列表中按照顺序插入元素 |
add(指定位置,某个对象) | 在指定位置插入元素 |
contains(某个对象) | 确定某个对象是否阿紫列表中 |
remove(某个对象) | 删除列表中某个对象 |
indexOf(某个对象) | 确定某个对象在列表中索引 |
subList(开始截取的位置,结束位置) | 从较大的列表中创建出一个片段 |
containsAll(对象/对象列表) | 判断对象/对象列表是否存在于列表中 注意:比较的对象的顺序并不重要 |
举例1:
import java.util.ArrayList;
import java.util.List;
class Fruit{
private String type;
public Fruit(String type){
this.type = type;
}
public String toString(){
return this.type;
}
}
public class ListTest {
public ListTest() {
}
public static void main(String[] args) {
List<Fruit> fruit = new ArrayList<Fruit>();
//1. 使用add()方法顺序添加元素并打印
fruit.add(new Fruit("Apple"));
fruit.add(new Fruit("Orange"));
fruit.add(new Fruit("Fuji"));
fruit.add(new Fruit("Pitch"));
fruit.add(new Fruit("Gala"));
System.out.println("1:"+fruit);
//2. 使用add添加元素并打印
Fruit f = new Fruit("Breaburn");
fruit.add(f);
System.out.println("2:"+fruit);
//3. 使用remove()删除指定元素并打印
fruit.remove(f);
System.out.println("3:"+fruit);
//4. 使用get()方法获取下标为2的元素
// 使用indexOf()方法获取指定元素的下标并打印
Fruit f1 = fruit.get(2);
System.out.println(f1+" "+fruit.indexOf(f1));
System.out.println("4:"+fruit);
//5. 使用add()方法在列表中间插入元素并打印
fruit.add(3,new Fruit("Apple2"));
System.out.println("5:"+fruit);
//6. 使用subList()方法从列表中截取某一长度的列表并打印
List<Fruit> sub = fruit.subList(1,4);
System.out.println("6:"+sub);
//7. 使用contains()方法判断截取的列表是否存在于原列表中
System.out.println(fruit.containsAll(sub));
}
}
(三)LinkedList
- LinkedList 和 ArrayList 一样,都实现了基本的List接口,但是在执行某些操作时(在List的中间插入和删除),比ArrayList更高效,但是在随机访问方面差一点。
- LinkedList还添加了使其用作栈,队列,或者和双端队列的方法。
- LinkedList中的一些方法如下: