java list的用法詳解

java中可變數組的原理就是不斷的創建新的數組,將原數組加到新的數組中。以下是本站小編搜索整理的關於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();

("java");

("php");//List集合中的'元素可以重複

("");

tln("原集合:"+a1);

(1, "Flash");

(0, "ps");

tln(a1);

ArrayList a2 = new ArrayList();

("javascript");

("3dMax");

("IBM");

ll(0, a2);

tln(a1);

}

  刪除指定位置的元素

代碼如下:

boolean remove(int index)

代碼如下:

public static void List_remove(){

ArrayList a1 = new ArrayList();

("javascript");

("php");

("flash");

tln("原集合:"+a1);

ve(0);

tln(a1);

}

修改指定角標的元素 set(int index, E element) 返回的是修改的那個元素

代碼如下:

public static void List_set() {

ArrayList a1 = new ArrayList();

("javascript");

("php");

("");

tln("原集合:"+a1);

(1, "falsh");

tln(a1);

}

代碼如下:

get(int index) 返回列表中指定位置的元素

subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之間的部分元素。

代碼如下:

public static void List_get() {

ArrayList a1 = new ArrayList();

("java");

("php");

("flash");

tln((0));//獲取指定角標的元素,有了該方法就可以遍歷該集合中的所有元素

tln(ist(1, 3));//獲取集合中某一部分的元素,包含頭不包含尾

}

List集合特有的迭代器:ListIterator(是Iterator的子接口)

注意:

在迭代時,是不可以通過集合對象的方法操作集合中的元素

因爲會發生ConcurrentModificationException異常(併發異常)

所以,在迭代器時,只能用迭代器的方法造作元素

因爲Iterator方法是有限的所以只能對元素進行判斷,取出,刪除的操作

如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator

  該接口只能通過List集合的listIterator方法獲取

代碼如下:

public class ListIteratorDemo {

public static void main(String[] args) {

ArrayList a1 = new ArrayList();

("java01");

("java02");

("java03");

("java04");

tln("原集合是:"+a1);

/*在迭代過程中準備添加或者刪除元素

Iterator it = ator();

while (ext()){

Object obj = ();

if (ls("java02"))

//("java008");//會出現併發異常,因爲迭代器正在操作集合,不能再用集合的方法操作集合了

ve();//將java02的引用從集合中刪除了

tln("obj:"+obj);

}

*/

//只有List的listIterator有增,刪,改,查這些功能,因爲只有List有索引

ListIterator li = Iterator();

while (ext()){

if(()ls("java02"))

//("java009");

("java006");

}

}

}

Vector:枚舉就是Vector特有的取出方式,跟迭代器很像(其實枚舉和迭代是一樣的) 已經被迭代器取代

代碼如下:

public class VectorDemo {

public static void main(String[] args) {

Vector v = new Vector();

("java01");

("java02");

("java03");

("java04");

for(Enumeration en = ents();oreElements();){

tln(Element());

}

}

}

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();

("java01");

("java02");

("java03");

("java04");

while(!pty()){

tln((veLast()));

}

}

}