Java中可變數組的原理就是不斷的創建新的數組,將原始數組加到新的數組中,下文對Java List用法做了詳解。需要的朋友參考下吧
Java中可變數組的原理就是不斷的創建新的數組,將原數組加到新的數組中,下文對Java List用法做了詳解。
List:元素是有順序的(怎麼存的就怎麼取出來,順序不會亂),元素可以重複(角標1上有個3,角標2上也可以有個3)因為此集合體係有索引
ArrayList:底層的資料結構所使用的是陣列結構(陣列長度是可變的百分之五十延長)(特點是查詢很快,但增刪較慢)執行緒不同步
LinkedList:底層的資料結構是鍊錶結構(特點是查詢較慢,增刪較快)
Vector:底層是陣列資料結構執行緒同步(陣列長度是可變的百分之百延長)(無論查詢或增刪都很慢,被ArrayList取代了)
List:特有的方法,凡是可以操作角標的方法都是該體系特有的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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" );
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);
}
|
登入後複製
刪除指定位置的元素
1 2 3 4 5 6 7 8 9 10 | 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) 回傳的是修改的那個元素
1 2 3 4 5 6 7 8 9 | 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(不包含)之間的部分元素。
1 2 3 4 5 | public static void List_get() {
ArrayList a1 = new ArrayList();
a1.add( "java" );
a1.add( "php" );
a1.add( "flash" );
|
登入後複製
1 2 3 | System.out.println(a1.get(0));
System.out.println(a1.subList(1, 3));
}
|
登入後複製
List集合特有的迭代器:ListIterator(是Iterator的子介面)
注意:
#在迭代時,是不可以通過集合物件的方法操作集合中的元素因為會發生ConcurrentModificationException異常(並發異常)所以,在迭代器時,只能用迭代器的方法造作元素因為Iterator方法是有限的所以只能對元素進行判斷,取出,刪除的操作如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator 該接口只能通過List集合的listIterator方法取得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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);
ListIterator li = a1.listIterator();
while (li.hasNext()){
if (li.next().equals( "java02" ))
li.set( "java006" );
}
}
}
|
登入後複製
Vector:枚舉就是Vector特有的取出方式,跟迭代器很像(其實枚舉和迭代是一樣的) 已經被迭代器取代
1 2 3 4 5 6 7 8 9 10 11 12 | 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出現了替代方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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()));
}
}
}
|
登入後複製
【相關推薦】
1. Java免費影片教學
2. YMP線上手冊
3. JAVA初級入門影片教學
以上是程式碼詳解List的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!