java開發的第十五個部落格(Collections工具類和比較器)
1.Collections(集合工具類)
1.常用功能
- public static boolean addAll(Collection c, T… elements):集合新增多個元素
- public static void shuffle(List<?> list):集合元素順序打亂
- public static void sort(List list):按從小到大的預設順序對集合元素排序(按照字典順序排序(內比較器))
- public static void sort(List list,Comparator<? super T> c):將集合元素按指定規則排序
- public static void reverse(List<?> list):反轉集合元素
2.如何按照指定規則排序
- 字串外比較器
ArrayList<Integer> al = new ArrayList();
al.add(666);
al.add(111);
al.add(888);
Collections,sort(al,new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
//o1-o2 從小到大排序
//o2-o1 從大到小排序
return o2.charAt(0)-o1.charAt(0);
}
})
3.自定義類實現比較器排序
- 自定義類內比較器實現排序
class Student implements Comparable<Student>{
private String name;
private int age;
//內比較器
@Override
public int compareTo(Student o) {//this=o1,o2=o;//o1-o2,this-o;
return this.age-o.age;
}
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 自定義類外比較器實現排序
public class demo5 {
public static void main(String[] args) {
// 建立四個學生物件 儲存到集合中
ArrayList<Student> list = new ArrayList<Student>();
list.add(new Student("jack",16));
list.add(new Student("abc",16));
list.add(new Student("ace",17));
list.add(new Student("mark",16));
//外比較器,年齡從大到小
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
//如果年齡相等,我想按照姓名的首字母從小到大排序
int num = o2.getAge()-o1.getAge();
//如果年齡相等,我想按照姓名的字典順序的反順序來排
if (num==0){
num = o2.getName().compareTo(o1.getName());
}
return num;
}
});
for (Student ss : list) {
System.out.println(ss.getName()+ss.getAge());
}
}
}
class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
4.內比較器(Comparable)與外比較器(Comparator)的區別
- 類內部實現比較器的預設規則是升序
- 實現外比較器需要自行書寫規則,沒有預設規則
- 不管內比較器還是外比較器都要實現兩個介面之一
- 如果同時實現了兩個介面,優先執行外比較器
5.可變引數
-
使用前提
當方法需要接受多個引數且引數型別一致 -
使用格式
修飾符 返回值型別 方法名(引數型別... 形參名){ }
- 本質
可變引數本質上就是一個陣列
修飾符 返回值型別 方法名(引數型別[] 形參名){ }
-
好處
直接使用陣列接收多個引數要求必須資料必須先放在陣列,再將陣列作為引數傳遞,而使用可變引數可以直接傳遞資料 -
注意事項
當方法具有多個引數和可變引數時,可變引數必須在最後面,否則可變引數會接收所有資料,導致其他引數接收不到資料
相關文章
- 常用的Java開發工具比較Java
- Java —— 集合工具類(Collections 類)Java
- Java之Collections工具類Java
- 【linux shell】推薦一個比較好的部落格Linux
- 一個比較float是否相等的工具類
- Collections工具類
- Java開發常用的16個工具類Java
- 【Java】比較業務實體資訊變化的工具類Java
- 模擬積體電路設計系列部落格——9.1 比較器
- [雪峰磁針石部落格]python包管理工具:Conda和pip比較Python
- Java 比較器Java
- 6、Collections工具類
- 個人部落格網站用什麼伺服器比較好?網站伺服器
- 機器學習常用的分類器比較機器學習
- 7、Collections集合工具類
- Java 常用工具類 Collections 原始碼分析Java原始碼
- 有哪些比較好的講Python進階的部落格?Python
- Java和JavaSciprt比較Java
- Java 集合類——Collections(1)Java
- Java 集合類——Collections(3)Java
- Java 集合類——Collections(2)Java
- JAVA中的Comparable介面和自定義比較器Java
- JavaSE基礎:Collections工具類Java
- Collections工具類,可以使用collections工具類對程式碼中的list進行分組
- 用鬥地主的例項學會使用java Collections工具類Java
- 不同Java垃圾回收器的比較Java
- Java 兩個日期比較Java
- 用vue + leancloud開發一個免費的部落格VueCloud
- Go和Python比較的話,哪個比較好?GoPython
- 不同的Java垃圾回收器的比較Java
- WebSphere5.0開發EJB,工具比較篇 (轉)Web
- 幾個比較火的BI分析工具
- 讓自由職業更為便捷的35個工具和6個部落格
- SQL Server約束和DML觸發器的比較SQLServer觸發器
- Oracle的expdp/impdp工具和exp/imp工具比較Oracle
- 部落格轉發小工具1
- 個人部落格開發系列:前臺部落格頁面開發部署完成
- 工具類——自定義Collections集合方法