java list(屬性方法)
List的方法和屬性 方法或屬性 作用
Capacity 用於獲取或設定List可容納元素的數量。當數量超過容量時,這個值會自動增長。您可以設定這個值以減少容量,也可以呼叫trin()方法來減少容量以適合實際的元素數目。
Count 屬性,用於獲取陣列中當前元素數量
Item( ) 通過指定索引獲取或設定元素。對於List類來說,它是一個索引器。
Add( ) 在List中新增一個物件的公有方法
AddRange( ) 公有方法,在List尾部新增實現了ICollection介面的多個元素
BinarySearch( ) 過載的公有方法,用於在排序的List內使用二分查詢來定位指定元素.
Clear( ) 在List內移除所有元素
Contains( ) 測試一個元素是否在List內
CopyTo( ) 過載的公有方法,把一個List拷貝到一維陣列內
Exists( ) 測試一個元素是否在List內
Find( ) 查詢並返回List內的出現的第一個匹配元素
FindAll( ) 查詢並返回List內的所有匹配元素
GetEnumerator( ) 過載的公有方法,返回一個用於迭代List的列舉器
Getrange( ) 拷貝指定範圍的元素到新的List內
IndexOf( ) 過載的公有方法,查詢並返回每一個匹配元素的索引
Insert( ) 在List內插入一個元素
InsertRange( ) 在List內插入一組元素
LastIndexOf( ) 過載的公有方法,,查詢並返回最後一個匹配元素的索引
Remove( ) 移除與指定元素匹配的第一個元素
RemoveAt( ) 移除指定索引的元素
RemoveRange( ) 移除指定範圍的元素
Reverse( ) 反轉List內元素的順序
Sort( ) 對List內的元素進行排序
ToArray( ) 把List內的元素拷貝到一個新的陣列內
trimToSize( ) 將容量設定為List中元素的實際數目
java中List的用法和例項詳解
List的用法
List包括List介面以及List介面的所有實現類。因為List介面實現了Collection介面,所以List介面擁有Collection介面提供的所有常用方法,又因為List是列表型別,所以List介面還提供了一些適合於自身的常用方法,如表1所示。
表1 List介面定義的常用方法及功能
從表1可以看出,List介面提供的適合於自身的常用方法均與索引有關,這是因為List集合為列表型別,以線性方式儲存物件,可以通過物件的索引操作物件。
List介面的常用實現類有ArrayList和LinkedList,在使用List集合時,通常情況下宣告為List型別,例項化時根據實際情況的需要,例項化為ArrayList或LinkedList,例如:
List<String> l = new ArrayList<String>();// 利用ArrayList類例項化List集合
List<String> l2 = new LinkedList<String>();// 利用LinkedList類例項化List集合
1.add(int index, Object obj)方法和set(int index, Object obj)方法的區別
在使用List集合時需要注意區分add(int index, Object obj)方法和set(int index, Object obj)方法,前者是向指定索引位置新增物件,而後者是修改指定索引位置的物件,例如執行下面的程式碼:
src/com/mwq/TestCollection.java關鍵程式碼:
public static void main(String[] args) {
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new LinkedList<String>();
list.add(a);
list.add(e);
list.add(d);
list.set(1, b);// 將索引位置為1的物件e修改為物件b
list.add(2, c);// 將物件c新增到索引位置為2的位置
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
在控制檯將輸出如下資訊:
A
B
C
D
因為List集合可以通過索引位置訪問物件,所以還可以通過for迴圈遍歷List集合,例如遍歷上面程式碼中的List集合的程式碼如下:
src/com/mwq/TestCollection.java關鍵程式碼:
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));// 利用get(int index)方法獲得指定索引位置的物件
}
src/com/mwq/TestCollection.java完整程式碼如下:
package com.mwq;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Iterator;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
System.out.println("開始:");
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new LinkedList<String>();
list.add(a);
list.add(e);
list.add(d);
list.set(1, b);// 將索引位置為1的物件e修改為物件b
list.add(2, c);// 將物件c新增到索引位置為2的位置
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// for (int i = 0; i < list.size(); i++) {
// System.out.println(list.get(i));// 利用get(int index)方法獲得指定索引位置的物件
// }
System.out.println("結束!");
}
}
2.indexOf(Object obj)方法和lastIndexOf(Object obj)方法的區別
在使用List集合時需要注意區分indexOf(Object obj)方法和lastIndexOf(Object obj)方法,前者是獲得指定物件的最小的索引位置,而後者是獲得指定物件的最大的索引位置,前提條件是指定的物件在List集合中具有重複的物件,否則如果在List集合中有且僅有一個指定的物件,則通過這兩個方法獲得的索引位置是相同的,例如執行下面的程式碼:
src/com/mwq/TestCollection.java關鍵程式碼:
public static void main(String[] args) {
String a = "A", b = "B", c = "C", d = "D", repeat = "Repeat";
List<String> list = new ArrayList<String>();
list.add(a); // 索引位置為 0
list.add(repeat); // 索引位置為 1
list.add(b); // 索引位置為 2
list.add(repeat); // 索引位置為 3
list.add(c); // 索引位置為 4
list.add(repeat); // 索引位置為 5
list.add(d); // 索引位置為 6
System.out.println(list.indexOf(repeat));
System.out.println(list.lastIndexOf(repeat));
System.out.println(list.indexOf(b));
System.out.println(list.lastIndexOf(b));
}
src/com/mwq/TestCollection.java完整程式碼如下:
package com.mwq;
import java.util.ArrayList;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
System.out.println("開始:");
String a = "A", b = "B", c = "C", d = "D", repeat = "Repeat";
List<String> list = new ArrayList<String>();
list.add(a); // 索引位置為 0
list.add(repeat); // 索引位置為 1
list.add(b); // 索引位置為 2
list.add(repeat); // 索引位置為 3
list.add(c); // 索引位置為 4
list.add(repeat); // 索引位置為 5
list.add(d); // 索引位置為 6
System.out.println(list.indexOf(repeat));
System.out.println(list.lastIndexOf(repeat));
System.out.println(list.indexOf(b));
System.out.println(list.lastIndexOf(b));
System.out.println("結束!");
}
}
在控制檯將輸出如下資訊:
1
5
2
2
3.subList(int fromIndex, int toIndex)方法
在使用subList(int fromIndex, int toIndex)方法擷取現有List集合中的部分物件生成新的List集合時,需要注意的是,新生成的集合中包含起始索引位置代表的物件,但是不包含終止索引位置代表的物件,例如執行下面的程式碼:
src/com/mwq/TestCollection.java關鍵程式碼:
public static void main(String[] args) {
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new ArrayList<String>();
list.add(a); // 索引位置為 0
list.add(b); // 索引位置為 1
list.add(c); // 索引位置為 2
list.add(d); // 索引位置為 3
list.add(e); // 索引位置為 4
list = list.subList(1, 3);// 利用從索引位置 1 到 3 的物件重新生成一個List集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
src/com/mwq/TestCollection.java完整程式碼:
package com.mwq;
import java.util.ArrayList;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
System.out.println("開始:");
String a = "A", b = "B", c = "C", d = "D", e = "E";
List<String> list = new ArrayList<String>();
list.add(a); // 索引位置為 0
list.add(b); // 索引位置為 1
list.add(c); // 索引位置為 2
list.add(d); // 索引位置為 3
list.add(e); // 索引位置為 4
list = list.subList(1, 3);// 利用從索引位置 1 到 3 的物件重新生成一個List集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("結束!");
}
}
在控制檯將輸出如下資訊:
B
C