當前位置:才華齋>計算機>java語言>

java list的用法詳解

java語言 閱讀(7.33K)

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

}

}

}