一、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輸出 |