java list用法示例詳解。本站提示廣大學習愛好者:(java list用法示例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是java list用法示例詳解正文
|--List:元素是有序的(怎樣存的就怎樣掏出來,次序不會亂),元素可以反復(角標1上有個3,角標2上也能夠有個3)由於該聚集系統有索引,
|-- ArrayList:底層的數據構造應用的是數組構造(數組長度是可變的百分之五十延伸)(特色是查詢很快,但增刪較慢)線程分歧步
|-- LinkedList:底層的數據構造是鏈表構造(特色是查詢較慢,增刪較快)
|-- Vector:底層是數組數據構造 線程同步(數組長度是可變的百分之百延伸)(不管查詢照樣增刪都很慢,被ArrayList替換了)
List:獨有的辦法,但凡可以操作角標的辦法都是該系統獨有的辦法
增
boolean add(int index, E element)
boolean addAll(index,Collection)
public static void List_add(){
ArrayList a1 = new ArrayList();
a1.add("java");
a1.add("php");//List聚集中的元素可以反復
a1.add(".net");
System.out.println("原聚集:"+a1);
a1.add(1, "Flash");
a1.add(0, "ps");
System.out.println(a1);
ArrayList a2 = new ArrayList();
a2.add("javascript");
a2.add("3dMax");
a2.add("IBM");
a1.addAll(0, a2);
System.out.println(a1);
}
刪除指定地位的元素
boolean remove(int index)
public static void List_remove(){
ArrayList a1 = new ArrayList();
a1.add("javascript");
a1.add("php");
a1.add("flash");
System.out.println("原聚集:"+a1);
a1.remove(0);
System.out.println(a1);
}
修正指定角標的元素 set(int index, E element) 前往的是修正的誰人元素
public static void List_set() {
ArrayList a1 = new ArrayList();
a1.add("javascript");
a1.add("php");
a1.add(".net");
System.out.println("原聚集:"+a1);
a1.set(1, "falsh");
System.out.println(a1);
}
查
get(int index) 前往列表中指定地位的元素
subList(int fromIndex, int toIndex) 前往列表中指定的 fromIndex(包含 )和 toIndex(不包含)之間的部門元素。
public static void List_get() {
ArrayList a1 = new ArrayList();
a1.add("java");
a1.add("php");
a1.add("flash");
System.out.println(a1.get(0));//獲得指定角標的元素,有了該辦法便可以遍歷該聚集中的一切元素
System.out.println(a1.subList(1, 3));//獲得聚集中某一部門的元素,包括頭不包括尾
}
List聚集獨有的迭代器:ListIterator(是Iterator的子接口)
留意:
在迭代時,是弗成以經由過程聚集對象的辦法操作聚集中的元素
由於會產生ConcurrentModificationException異常(並發異常)
所以,在迭代器時,只能用迭代器的辦法做作元素
由於Iterator辦法是無限的所以只能對元素停止斷定,掏出,刪除的操作
假如想要其他的操作如添加,修正等,就須要應用其子接口,ListIterator
該接口只能經由過程List聚集的listIterator辦法獲得
public class ListIteratorDemo {
public static void main(String[] args) {
ArrayList a1 = new ArrayList();
a1.add("java01");
a1.add("java02");
a1.add("java03");
a1.add("java04");
System.out.println("原聚集是:"+a1);
/*在迭代進程中預備添加或許刪除元素
Iterator it = al.iterator();
while (it.hasNext()){
Object obj = it.next();
if (obj.equals("java02"))
//al.add("java008");//會湧現並發異常,由於迭代器正在操作聚集,不克不及再用聚集的辦法操作聚集了
it.remove();//將java02的援用從聚集中刪除
System.out.println("obj:"+obj);
}
*/
//只要List的listIterator有增,刪,改,查這些功效,由於只要List有索引
ListIterator li = a1.listIterator();
while (li.hasNext()){
if(li.next().equals("java02"))
//li.add("java009");
li.set("java006");
}
}
}
Vector:列舉就是Vector獨有的掏出方法,跟迭代器很像(其實列舉和迭代是一樣的) 曾經被迭代器代替
public class VectorDemo {
public static void main(String[] args) {
Vector v = new Vector();
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
for(Enumeration en = v.elements();en.hasMoreElements();){
System.out.println(en.nextElement());
}
}
}
LinkedList:
特無方法:
addFirst();在頭部添加元素 addLast();在尾部添加元素
getFirst(); getLast(); 獲得元素但不刪除元素。假如聚集中沒有元素,會湧現NoSuchElementException
removeFirst(); removeLast(); 獲得元素然則刪除元素。假如聚集中沒有元素,會湧現NoSuchElementException
在JDK1.6湧現了替換辦法
offerFirst(); offerLast();
peekFirst(); peekLast(); 獲得元素,然則元素不被刪除。假如聚集中沒有元素,會前往null
pollFirst(); pollLast(); 獲得元素,然則元素被刪除。假如聚集中沒有元素,會前往null
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList link = new LinkedList();
link.add("java01");
link.add("java02");
link.add("java03");
link.add("java04");
while(!link.isEmpty()){
System.out.println((link.removeLast()));
}
}
}