Java基礎(chǔ)詳解之集合框架工具Collections
一、Collections
說明:Collcetions是集合框架中的工具,特點(diǎn)是方法都是靜態(tài)的。
二、Collections中的常見方法
1,對(duì)list進(jìn)行二分查找:前提該集合一定要有序。 int binarySearch(list,key);//要求list集合中的元素都是Comparable的子類。 int binarySearch(list,key,Comparator); 2,對(duì)list集合進(jìn)行排序。 sort(list); sort(list,comaprator); 3,對(duì)集合取最大值或者最小值。 max(Collection) max(Collection,comparator) min(Collection) min(Collection,comparator) 4,對(duì)list集合進(jìn)行反轉(zhuǎn)。 reverse(list); 5,對(duì)比較方式進(jìn)行強(qiáng)行逆轉(zhuǎn)。 Comparator reverseOrder(); Comparator reverseOrder(Comparator); 6,對(duì)list集合中的元素進(jìn)行位置的置換。 swap(list,x,y); 7,對(duì)list集合進(jìn)行元素的替換。如果被替換的元素不存在,那么原集合不變。 replaceAll(list,old,new);
三、Aarrays:用于對(duì)數(shù)組操作的工具類
1,binarySearch(int[]) binarySearch(double[])... 2,sort(int[]) sort(char[]).... 3,toString(int[]).....:將數(shù)組變成字符串。 4,copyOf();復(fù)制數(shù)組。 5,copyOfRange():復(fù)制部分?jǐn)?shù)組。 6,equals(int[],int[]);比較兩個(gè)數(shù)組是否相同。 7,List asList(T[]);將數(shù)組變成集合。 這樣可以通過集合的操作來操作數(shù)組中元素, 但是不可以使用增刪方法,add,remove。因?yàn)閿?shù)組長度是固定的,會(huì)出現(xiàn)UnsupportOperationExcetion。 可以使用的方法:contains,indexOf。。。 如果數(shù)組中存入的基本數(shù)據(jù)類型,那么asList會(huì)將數(shù)組實(shí)體作為集合中的元素。 如果數(shù)組中的存入的應(yīng)用數(shù)據(jù)類型,那么asList會(huì)將數(shù)組中的元素作為集合中的元素。 如果想要將集合變數(shù)組: 可以使用Collection中的toArray方法。 傳入指定的類型數(shù)組即可,該數(shù)組的長度最好為集合的size。
四、二分查找過程中的默認(rèn)比較器
// 在二分查找中設(shè)定默認(rèn)的比較器
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class binarySerach {
public static void main(String[] args)
{
sortDemo();
}
public static void sortDemo()
{
List<String> list = new ArrayList<String>(); // List集合沒有比較方法
list.add("abcd");
list.add("aaa");
list.add("bbb");
list.add("abcdcdc");
list.add("z");
list.add("zz");
list.add("qq");
sop("原集合為:"+list);
int index = Collections.binarySearch(list,"bbb",new StrLenComparator2());
sop("自定義比較器的index: "+index);
int index2 = Collections.binarySearch(list,"abcd");
sop("不傳入比較器index:"+index2);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class StrLenComparator2 implements Comparator<String>
{
public int compare(String s1, String s2)
{
if(s1.length() > s2.length())
return 1;
if (s1.length() < s2.length())
return -1;
return s1.compareTo(s2);
}
}
五、集合轉(zhuǎn)化為數(shù)組
// 集合變數(shù)組
// 為什么需要這樣做?為了對(duì)元素進(jìn)行限定操作,不需要進(jìn)行增刪。
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
public class CollectionToArray {
public static void main(String[] args)
{
ArrayList<String> al = new ArrayList<String>();
al.add("ABC1");
al.add("ABC2");
al.add("ABC3");
al.add("ABC4");
al.add("ABC5");
System.out.println(al);
String[] arr = al.toArray(new String[al.size()]); // toArray 方法把集合轉(zhuǎn)換為數(shù)組
System.out.println(Arrays.toString(arr));//打印內(nèi)容
}
}
六、增強(qiáng)for循環(huán)
// 增強(qiáng)for循環(huán)的出現(xiàn)是為了解決總是使用迭代器方法進(jìn)行元素提取
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class ForEachDemo {
public static void main(String[] args)
{
// 例子一:
ArrayList<String> al = new ArrayList<String>();
al.add("ABC1");
al.add("ABC2");
al.add("ABC3");
al.add("ABC4");
for(String s : al)
{
System.out.println(s);
}
//System.out.println(al);
// 例子二:HashMap的增強(qiáng)for循環(huán),使用entrySet()
System.out.println("例子二:HashMap的增強(qiáng)for循環(huán),使用entrySet()");
HashMap<Integer,String> hm = new HashMap<Integer, String>();
hm.put(1,"Wzy1");
hm.put(2,"Wzy2");
hm.put(3,"Wzy3");
hm.put(4,"Wzy4");
for (Map.Entry<Integer,String> it : hm.entrySet())
{
System.out.println("Key: "+it.getKey()+"--- Value:"+it.getValue());
}
// 例子三:HashMap的增強(qiáng)for循環(huán),使用KeySet()
System.out.println("例子三:HashMap的增強(qiáng)for循環(huán),使用KeySet()");
Set<Integer> keySet = hm.keySet();
for(Integer i : keySet)
{
System.out.println("Key: "+i+"--- Value:"+hm.get(i));
}
}
}
七、關(guān)于可變參數(shù)的方法
一般的,在java中使用重載的方法應(yīng)對(duì)不同的數(shù)據(jù)對(duì)象,讓它們都可以使用方法,但是還有一種寫法,可以只寫一個(gè)方法來接收數(shù)據(jù),也不需要建立新的對(duì)象。
// 例子一:
public class mutilMethod {
public static void main(String[] args)
{
show(1,2,3,4,5);
}
public static void show(int...a) // 可變參數(shù)寫法,數(shù)組的特殊值放在開頭
{
System.out.println(a.length);
}
}
//例子二:數(shù)組有特殊的
public class mutilMethod {
public static void main(String[] args)
{
show("字符串",2,3,4,5); // 特殊字符String與int發(fā)生組合
}
public static void show(String c, int...a) // 可變參數(shù)寫法,數(shù)組的特殊值放在開頭
{
System.out.println(a.length);
}
}
八、關(guān)于reverseOrder函數(shù)使用
(1)Collections提供的比較器作為新比較器
(2)強(qiáng)行逆轉(zhuǎn)現(xiàn)有比較器
import java.util.*;
public class reverseOrder {
public static void main(String[] args)
{
sortDemo();
}
public static void sortDemo()
{
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder()); // 傳入reverseOrder()將集合倒序排列
ts.add("aaa");// 或者手寫一個(gè)自定義比較器,之后使用reverseOrder()函數(shù)強(qiáng)行逆轉(zhuǎn)
ts.add("abc");
ts.add("a");
ts.add("aa");
ts.add("bbb");
ts.add("cccc");
ts.add("ddddd");
ts.add("eeeeee");
Iterator it = ts.iterator();
while (it.hasNext())
{
sop(it.next());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
九、靜態(tài)類導(dǎo)入
import java.util.*;
import static java.util.Arrays.*;
import static java.lang.System.*;
public class StaticImport extends Object {
public static void main(String[] args)
{
int[] arr = {3,1,5};
sort(arr); // 去掉了Arrays.
int index = binarySearch(arr,1);// 去掉了Arrays.
System.out.println(Arrays.toString(arr)); // 不能去掉Arrays.
out.println("index = "+index);// 去掉System.
}
}
到此這篇關(guān)于Java基礎(chǔ)詳解之集合框架工具Collections的文章就介紹到這了,更多相關(guān)java集合框架工具Collections內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 獲取當(dāng)前系統(tǒng)時(shí)間的三種方法
這篇文章主要介紹了Java 獲取當(dāng)前系統(tǒng)時(shí)間的三種方法,幫助大家利用Java處理時(shí)間,感興趣的朋友可以了解下2020-10-10
Java實(shí)現(xiàn)將文件或者文件夾壓縮成zip的詳細(xì)代碼
這篇文章主要介紹了Java實(shí)現(xiàn)將文件或者文件夾壓縮成zip的詳細(xì)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11
MyBatis-plus報(bào)錯(cuò)Property ‘sqlSessionFactory‘ or 
這篇文章主要給大家介紹了MyBatis-plus 報(bào)錯(cuò) Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required的兩種解決方法,如果遇到相同問題的朋友可以參考借鑒一下2023-12-12
使用Java實(shí)現(xiàn)6種常見負(fù)載均衡算法
Java負(fù)載均衡算法也是分布式系統(tǒng)中的重要組成部分,用于將來自客戶端的請(qǐng)求分配到不同的后端服務(wù)器上,本文將介紹常見的Java負(fù)載均衡算法,輪詢法、加權(quán)隨機(jī)法……一次性讓你了解?6?種常見負(fù)載均衡算法2023-06-06
SpringBoot集成支付寶沙箱支付的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot集成支付寶沙箱支付的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Java實(shí)現(xiàn)的簡單字符串反轉(zhuǎn)操作示例
這篇文章主要介紹了Java實(shí)現(xiàn)的簡單字符串反轉(zhuǎn)操作,結(jié)合實(shí)例形式分別描述了java遍歷逆序輸出以及使用StringBuffer類的reverse()方法兩種字符串反轉(zhuǎn)操作技巧,需要的朋友可以參考下2018-08-08
MyBatis高級(jí)映射ResultMap解決屬性問題
對(duì)于數(shù)據(jù)庫中對(duì)表的增刪改查操作,我們知道增刪改都涉及的是單表,而只有查詢操作既可以設(shè)計(jì)到單表操作又可以涉及到多表操作,所以對(duì)于輸入映射parameterType而言是沒有所謂的高級(jí)映射的,也就是說高級(jí)映射只針對(duì)于輸出映射2023-02-02

