一、List接口:
List是Collection的子接口,里面可以保存各个重复的内容,此接口的定义如下:
public interface List<E> extends Collection<E>
二、List接口的常用子类----ArrayList
1.ArrayList是List子类,可以直接通过对象的多态性,为List接口实例化
2.此类的定义如下:
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
3.AbstractList类的定义如下:
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
import java.util.ArrayList;
import java.util.List;
import java.util.Collection;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add("world");
System.out.println(allList);
Collection<String> allCollection = new ArrayList<String>();
allCollection.add("one");
allCollection.add("dream");
allList.addAll(allCollection);
System.out.println(allList);
allList.addAll(0, allCollection);
System.out.println(allList);
}
}
以上是插入数据的操作,下面是删除数据的操作:
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
System.out.println(allList);
allList.remove(0);
System.out.println(allList);
allList.remove("hello");
System.out.println(allList);
}
}
集合中的内容可以添加、删除还有最重要的输出:
1.在List接口中提供了get()方法,利用此方法可以完成输出
2.通过循环完成输出,循环的次数由size()方法取得
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
System.out.print("List从前向后顺序输出为:");
for(int i = 0; i < allList.size(); i++){
System.out.print(allList.get(i) + "、");
}
System.out.print("\nList从后向前顺序输出为:");
for(int i = allList.size()-1; i >= 0; i--){
System.out.print(allList.get(i) + "、");
}
}
}
<T> T[] toArray(T[] a)返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
String[] str = allList.toArray(new String[]{}); //指定好类型
for(int i = 0; i < str.length; i++){
System.out.print(str[i] + "、");
}
}
}
Object[] toArray()返回包含此 collection 中所有元素的数组。如果 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
Object[] obj = allList.toArray();
for(int i = 0; i < obj.length; i++){
String temp = (String)obj[i];
System.out.print(temp + "、");
}
}
}
集合中还有一下几个操作:
1.判断集合是否为空:boolean isEmpty();
2.截取部分集合:List接口扩充
List<E> subList(int fromIndex, int toIndex)3.查找指定的对象是否存在:
int indexOf(Object o)
4.查找是否存在:
boolean contains(Object o)
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
System.out.println("集合操作前是否为空:" + allList.isEmpty());
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
System.out.println(allList.contains("hello")?"\"hello\"字符串存在!" : "\"hello\"字符串不存在!");
List<String> subList = allList.subList(2, 3); //字符串截取
System.out.println("字符截取:");
for(int i = 0; i < subList.size(); i++){
System.out.print(subList.get(i) + "、");
}
System.out.println("\none字符串的位置:" + allList.indexOf("one"));
System.out.println("集合操作后是否为空:" + allList.isEmpty());
}
}
三、挽救的子类:Vector
在List接口中还有一个子类:Vector,Vector类算是一个元老级的类。
public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
import java.util.Vector;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new Vector<String>();
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
System.out.println(allList);
}
}
四、子类的差异:ArrayList与Vector的区别
比较点 | ArrayList | Vector |
推出时间 | JDK1.2之后推出的,属于新的操作类 | JDK1.0时推出,属于旧的操作类 |
性能 | 采用异步处理方式,性能更高 | 采用同步处理方式,性能较低 |
线程安全 | 属于非线程安全的操作类 | 属于线程安全的操作类 |
输出 | 只能使用Iterator、foreach输出 | 可以使用Iterator、foreach、Enumeration输出 |