Java.util.Collections
類包的學(xué)習(xí)
1.
描述:
1.1
概述
java.util.Collections
類包含很多有用的方法,可以使程序員的工作變得更加容易,但是這些方法通常都沒有被充分地利用。
Javadoc
給出
Collections
類最完整的描述:“這一個類包含可以操作或返回集合的專用靜態(tài)類。
1.2
所含方法
Iterator, ArrayList, Elements, Buffer, Map,Collections
?
列子:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
?
public class CollectionsSort {
public CollectionsSort() {
?
}
?
public static void main(String[] args) {
double array[] = {111, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
//list.add(""+array[i]);
}
double arr[] = {111};
for(int j=0;j<arr.length;j++){
li.add(new Double(arr[j]));
}
}
?
2.
具體操作
1)
排序
(Sort)
使用
sort
方法可以根據(jù)元素的自然順序
對指定列表按升序進行排序
。列表中的所有元素都必須實現(xiàn)
Comparable
接口。此列表內(nèi)的所有元素都必須是使用指定比較器可相互比較的
double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.sort(list);
for (int i = 0; i < array.length; i++) {
System.out.println(list.get(i)); ?
}
//
結(jié)果:
112,111,23,456,231
?
2)
混排(
Shuffling
)
混排算法所做的正好與
sort
相反
:
它打亂在一個
List
中可能有的任何排列的蹤跡。也就是說,基于隨機源的輸入重排該
List,
這樣的排列具有相同的可能性(假設(shè)隨機源是公正的)。這個算法在實現(xiàn)一個碰運氣的游戲中是非常有用的。例如,它可被用來混排代表一副牌的
Card
對象的一個
List
。另外,在生成測試案例時,它也是十分有用的。
Collections.Shuffling(list)
double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.shuffle(list);
for (int i = 0; i < array.length; i++) {
System.out.println(li.get(i));
}
//
結(jié)果:
112,111,23,456,231
?
3)
反轉(zhuǎn)
(Reverse)
使用
Reverse
方法可以根據(jù)元素的自然順序
對指定列表按降序進行排
序。
Collections.reverse(list)
double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections. reverse (list);
for (int i = 0; i < array.length; i++) {
System.out.println(li.get(i));
}
//
結(jié)果:
231,456,23,111,112
?
?
4)
替換所以的元素
(Fill)
使用指定元素替換指定列表中的所有元素。
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<str.length;j++){
li.add(new String(str[j]));
}
Collections.fill(li,"aaa");
for (int i = 0; i < li.size(); i++) {
System.out.println("list[" + i + "]=" + li.get(i));
?
}
//
結(jié)果:
aaa,aaa,aaa,aaa,aaa
?
5)
拷貝
(Copy)
用兩個參數(shù),一個目標(biāo)
List
和一個源
List,
將源的元素拷貝到目標(biāo),并覆蓋它的內(nèi)容。目標(biāo)
List
至少與源一樣長。如果它更長,則在目標(biāo)
List
中的剩余元素不受影響。
Collections.copy(list,li):
后面一個參數(shù)是目標(biāo)列表
,
前一個是源列表
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {1131,333};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<arr.length;j++){
li.add(new Double(arr[j]));
}
Collections.copy(list,li);
for (int i = 0; i <list.size(); i++) {
System.out.println("list[" + i + "]=" + list.get(i));
}
//
結(jié)果:
1131,333,23,456,231
?
6)
返回
Collections
中最小元素
(min)
根據(jù)指定比較器產(chǎn)生的順序,返回給定
collection
的最小元素。
collection
中的所有元素都必須是通過指定比較器可相互比較的
Collections.min(list)
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.min(list);
for (int i = 0; i <list.size(); i++) {
System.out.println("list[" + i + "]=" + list.get(i));
}
//
結(jié)果:
23
7)
返回
Collections
中最小元素
(max)
根據(jù)指定比較器產(chǎn)生的順序,返回給定
collection
的最大元素。
collection
中的所有元素都必須是通過指定比較器可相互比較的
Collections.max(list)
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.max(list);
for (int i = 0; i <list.size(); i++) {
System.out.println("list[" + i + "]=" + list.get(i));
}
//
結(jié)果:
456
?
8) lastIndexOfSubList
返回指定源列表中最后一次出現(xiàn)指定目標(biāo)列表的起始位置
int count = Collections.lastIndexOfSubList(list,li);
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {111};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<arr.length;j++){
li.add(new Double(arr[j]));
}
Int locations = Collections. lastIndexOfSubList (list,li);
System.out.println(“===”+ locations);
//
結(jié)果
3
?
9) IndexOfSubList
返回指定源列表中第一次出現(xiàn)指定目標(biāo)列表的起始位置
int count = Collections.indexOfSubList(list,li);
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {111};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<arr.length;j++){
li.add(new Double(arr[j]));
}
Int locations = Collections.indexOfSubList(list,li);
System.out.println(“===”+ locations);
//
結(jié)果
1
?
10) Rotate
根據(jù)指定的距離循環(huán)移動指定列表中的元素
Collections.rotate(list,-1);
如果是負數(shù),則正向移動,正數(shù)則方向移動
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.rotate(list,-1);
for (int i = 0; i <list.size(); i++) {
System.out.println("list[" + i + "]=" + list.get(i));
}
//
結(jié)果:
111,23,456,231,112
|