Java集合框架Collections原理及用法實(shí)例
Collections工具類(lèi)
Java里關(guān)于聚合的工具類(lèi),包含有各種有關(guān)集合操作的靜態(tài)多態(tài)方法,不能實(shí)例化(把構(gòu)造函數(shù)私有化)
public class Collections {
// Suppresses default constructor, ensuring non-instantiability.
private Collections() {
}
}
和Collection的區(qū)別
- Collection是接口,提供了對(duì)集合對(duì)象進(jìn)行基本操作的通用接口方法,List、Set等多種具體的實(shí)現(xiàn)類(lèi)
- Collection是工具類(lèi),專(zhuān)門(mén)從操作Collection接口實(shí)現(xiàn)類(lèi)里面的元素
常見(jiàn)方法
排序
Sort(List list)
按自然排序的升序排序
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaaa");
list.add("zzz");
list.add("gggg");
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
自定義排序規(guī)則
Sort(List list,Comparator c),由Comparator控制排序邏輯
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaaa");
list.add("zzz");
list.add("gggg");
System.out.println(list);
//默認(rèn)升序
Collections.sort(list, Comparator.naturalOrder());
System.out.println(list);
//降序
Collections.sort(list, Comparator.reverseOrder());
System.out.println(list);
}
隨機(jī)排序
shuffle(List list)
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
list.add("8");
list.add("9");
list.add("10");
list.add("J");
list.add("Q");
list.add("K");
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
}
獲取最值元素
max(Collection coll)#
默認(rèn)比較,不適合對(duì)象比較
max(Collection coll,Comparator comparator)#
Student.java
package com.cyb.test;
class Student {
public Student(String name, int age) {
this.name = name;
this.age = age;
}
private int age;
private String name;
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Student{" + "age=" + age + ", name='" + name + '\'' + '}';
}
}
Test03.java
package com.cyb.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class test03 {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
list.add(new Student("jack", 26));
list.add(new Student("tom", 29));
list.add(new Student("mary", 32));
list.add(new Student("tony", 19));
list.add(new Student("smith", 41));
System.out.println(list);
Student maxAgeStudent = Collections.max(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
});
System.out.println("maxAgeStudent = "+maxAgeStudent.toString());
Student mixAgeStudent = Collections.min(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
});
System.out.println("mixAgeStudent = "+mixAgeStudent.toString());
}
}
創(chuàng)建不可變集合unmodifiablleXXX()
List<String> list = new ArrayList<>();
list.add("SpringBoot課程");
list.add("架構(gòu)課程");
list.add("微服務(wù)SpringCloud課程"); //設(shè)置為只讀List集合
list = Collections.unmodifiableList(list);
System.out.println(list);
Set<String> set = new HashSet<>();
set.add("Mysql教程");
set.add("Linux服務(wù)器器教程");
set.add("Git教程");
//設(shè)置為只讀Set集合
set = Collections.unmodifiableSet(set);
System.out.println(set);
Map<String, String> map = new HashMap<>();
map.put("key1", "課程1");
map.put("key2", "課程2");
//設(shè)置為只讀Map集合
map = Collections.unmodifiableMap(map);
System.out.println(map);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java后臺(tái)通過(guò)Collections獲取list集合中最大數(shù),最小數(shù)代碼
- Java Collections集合繼承結(jié)構(gòu)圖_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- JAVA對(duì)list集合進(jìn)行排序Collections.sort()
- JavaSE的三大接口:Comparator,Comparable和Cloneable詳解
- Java Comparable及Comparator接口區(qū)別詳解
- Java Comparable和Comparator對(duì)比詳解
- Java 比較接口comparable與comparator區(qū)別解析
- Java Comparable 和 Comparator 的詳解及區(qū)別
- 淺析Java中comparator接口與Comparable接口的區(qū)別
- 對(duì)比Java中的Comparable排序接口和Comparator比較器接口
- java?集合工具類(lèi)Collections及Comparable和Comparator排序詳解
相關(guān)文章
java靜態(tài)工具類(lèi)注入service出現(xiàn)NullPointerException異常處理
如果我們要在我們自己封裝的Utils工具類(lèi)中或者非controller普通類(lèi)中使用@Autowired注解注入Service或者M(jìn)apper接口,直接注入是報(bào)錯(cuò)的,因Utils用了靜態(tài)方法,我們無(wú)法直接用非靜態(tài)接口的,遇到這問(wèn)題,我們要想法解決,下面小編就簡(jiǎn)單介紹解決辦法,需要的朋友可參考下2021-09-09
Java并發(fā)編程之詳解CyclicBarrier線程同步
在之前的文章中已經(jīng)為大家介紹了java并發(fā)編程的工具:BlockingQueue接口,ArrayBlockingQueue,DelayQueue,LinkedBlockingQueue,PriorityBlockingQueue,SynchronousQueue,BlockingDeque接口,ConcurrentHashMap,CountDownLatch,本文為系列文章第十篇,需要的朋友可以參考下2021-06-06
Spring Boot Logging Level設(shè)置為off時(shí)的Bug
這篇文章主要介紹了Spring Boot Logging Level設(shè)置為off時(shí)的Bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
java中List接口與實(shí)現(xiàn)類(lèi)介紹
大家好,本篇文章主要講的是java中List接口與實(shí)現(xiàn)類(lèi)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽2021-12-12
解決Maven無(wú)法下載2.1.7.js7版本的itext依賴(lài)問(wèn)題
本文主要解決使用Maven編譯項(xiàng)目時(shí)出現(xiàn)的itext依賴(lài)版本問(wèn)題,通過(guò)分析,發(fā)現(xiàn)該問(wèn)題是由jasperreports依賴(lài)的特定版本itext導(dǎo)致的,解決方法是排除jasperreports中的itext依賴(lài),并自行指定更高版本的itext依賴(lài)2024-12-12
Java swing 圖像處理多種效果實(shí)現(xiàn)教程
這篇文章主要介紹了Java swing 圖像處理多種效果實(shí)現(xiàn)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
java實(shí)現(xiàn)socket客戶(hù)端連接服務(wù)端
本文是個(gè)人剛剛開(kāi)始學(xué)習(xí)如何通過(guò)socket去發(fā)送信息下邊的案例,也是書(shū)上的在這留下筆記,最后附上一個(gè)實(shí)例,有需要的小伙伴可以參考下。2015-10-10
spring boot aop 記錄方法執(zhí)行時(shí)間代碼示例
這篇文章主要介紹了spring boot aop 記錄方法執(zhí)行時(shí)間代碼示例,分享了相關(guān)代碼,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02

