java中有個(gè)
java.util.Collections集合類,
public class Collections
- extends Object
此類完全由在 collection 上進(jìn)行操作或返回 collection 的靜態(tài)方法組成。它包含在 collection 上操作的多態(tài)算法,即“包裝器”,包裝器返回由指定 collection 支持的新 collection,以及少數(shù)其他內(nèi)容。
如果為此類的方法所提供的 collection 或類對(duì)象為 null,則這些方法都會(huì)拋出 NullPointerException。
1.概述
? ? java.util.Collections 中有很多有用的方法:排序,混排,反轉(zhuǎn),替換,拷貝,返回最小元素,返回最大元素等等。
2.具體操作:
??1) 排序(Sort)
使用sort方法可以根據(jù)元素的自然順序 對(duì)指定列表按升序進(jìn)行排序。列表中的所有元素都必須實(shí)現(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(li.get(i));
}?
//結(jié)果:112,111,23,456,231
2) 混排(Shuffling)
混排算法所做的正好與 sort 相反: 它打亂在一個(gè) List 中可能有的任何排列的蹤跡。也就是說(shuō),基于隨機(jī)源的輸入重排該 List, 這樣的排列具有相同的可能性(假設(shè)隨機(jī)源是公正的)。這個(gè)算法在實(shí)現(xiàn)一個(gè)碰運(yùn)氣的游戲中是非常有用的。例如,它可被用來(lái)混排代表一副牌的 Card 對(duì)象的一個(gè) List 。另外,在生成測(cè)試案例時(shí),它也是十分有用的。
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ù)元素的自然順序 對(duì)指定列表按降序進(jìn)行排
序。
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)
用兩個(gè)參數(shù),一個(gè)目標(biāo) List 和一個(gè)源 List, 將源的元素拷貝到目標(biāo),并覆蓋它的內(nèi)容。目標(biāo) List 至少與源一樣長(zhǎng)。如果它更長(zhǎng),則在目標(biāo) List 中的剩余元素不受影響。
Collections.copy(list,li): 后面一個(gè)參數(shù)是目標(biāo)列表 ,前一個(gè)是源列表
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 中的所有元素都必須是通過(guò)指定比較器可相互比較的
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 中的所有元素都必須是通過(guò)指定比較器可相互比較的
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?
??????????