JAVA類集----List接口

一、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時推出,屬於舊的操作類

性能

採用異步處理方式,性能更高

採用同步處理方式,性能較低

線程安全

屬於非線程安全的操作類

屬於線程安全的操作類

輸出

只能使用Iteratorforeach輸出

可以使用IteratorforeachEnumeration輸出


發佈了54 篇原創文章 · 獲贊 14 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章