Java基礎詳解之集合框架工具Collections
一、Collections
說明:Collcetions是集合框架中的工具,特點是方法都是靜態(tài)的。
二、Collections中的常見方法
1,對list進行二分查找:前提該集合一定要有序。 int binarySearch(list,key);//要求list集合中的元素都是Comparable的子類。 int binarySearch(list,key,Comparator); 2,對list集合進行排序。 sort(list); sort(list,comaprator); 3,對集合取最大值或者最小值。 max(Collection) max(Collection,comparator) min(Collection) min(Collection,comparator) 4,對list集合進行反轉。 reverse(list); 5,對比較方式進行強行逆轉。 Comparator reverseOrder(); Comparator reverseOrder(Comparator); 6,對list集合中的元素進行位置的置換。 swap(list,x,y); 7,對list集合進行元素的替換。如果被替換的元素不存在,那么原集合不變。 replaceAll(list,old,new);
三、Aarrays:用于對數(shù)組操作的工具類
1,binarySearch(int[]) binarySearch(double[])... 2,sort(int[]) sort(char[]).... 3,toString(int[]).....:將數(shù)組變成字符串。 4,copyOf();復制數(shù)組。 5,copyOfRange():復制部分數(shù)組。 6,equals(int[],int[]);比較兩個數(shù)組是否相同。 7,List asList(T[]);將數(shù)組變成集合。 這樣可以通過集合的操作來操作數(shù)組中元素, 但是不可以使用增刪方法,add,remove。因為數(shù)組長度是固定的,會出現(xiàn)UnsupportOperationExcetion。 可以使用的方法:contains,indexOf。。。 如果數(shù)組中存入的基本數(shù)據(jù)類型,那么asList會將數(shù)組實體作為集合中的元素。 如果數(shù)組中的存入的應用數(shù)據(jù)類型,那么asList會將數(shù)組中的元素作為集合中的元素。 如果想要將集合變數(shù)組: 可以使用Collection中的toArray方法。 傳入指定的類型數(shù)組即可,該數(shù)組的長度最好為集合的size。
四、二分查找過程中的默認比較器
// 在二分查找中設定默認的比較器 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); } }
五、集合轉化為數(shù)組
// 集合變數(shù)組 // 為什么需要這樣做?為了對元素進行限定操作,不需要進行增刪。 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 方法把集合轉換為數(shù)組 System.out.println(Arrays.toString(arr));//打印內容 } }
六、增強for循環(huán)
// 增強for循環(huán)的出現(xià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的增強for循環(huán),使用entrySet() System.out.println("例子二:HashMap的增強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的增強for循環(huán),使用KeySet() System.out.println("例子三:HashMap的增強for循環(huán),使用KeySet()"); Set<Integer> keySet = hm.keySet(); for(Integer i : keySet) { System.out.println("Key: "+i+"--- Value:"+hm.get(i)); } } }
七、關于可變參數(shù)的方法
一般的,在java中使用重載的方法應對不同的數(shù)據(jù)對象,讓它們都可以使用方法,但是還有一種寫法,可以只寫一個方法來接收數(shù)據(jù),也不需要建立新的對象。
// 例子一: 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); } }
八、關于reverseOrder函數(shù)使用
(1)Collections提供的比較器作為新比較器
(2)強行逆轉現(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");// 或者手寫一個自定義比較器,之后使用reverseOrder()函數(shù)強行逆轉 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)類導入
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. } }
到此這篇關于Java基礎詳解之集合框架工具Collections的文章就介紹到這了,更多相關java集合框架工具Collections內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java實現(xiàn)將文件或者文件夾壓縮成zip的詳細代碼
這篇文章主要介紹了Java實現(xiàn)將文件或者文件夾壓縮成zip的詳細代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-11-11MyBatis-plus報錯Property ‘sqlSessionFactory‘ or 
這篇文章主要給大家介紹了MyBatis-plus 報錯 Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required的兩種解決方法,如果遇到相同問題的朋友可以參考借鑒一下2023-12-12SpringBoot集成支付寶沙箱支付的實現(xiàn)示例
本文主要介紹了SpringBoot集成支付寶沙箱支付的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12