java.utils.Collections是集合工具類,用來對集合進行操作。部分方法如下: * - public static <T> boolean addAll(Collection<T> c, T...elements):往集合中添加一些元素/ * - public static void shuffle(List<?> list) 打亂順序:打亂集合順序 * - public static <T> void sort(List<T> list) 將集合中元素按照默認規則排序 * - public static <T> void sort(List<T> list, Comparator<? super T>):將集合中元素按照指定規則排序
實例:
import java.lang.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
//往集合中添加多個元素
/*
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
System.out.println(list);
*/
//public static <T> boolean addAll(Collection<T> c, T...elements):往集合中添加一些元素
Collections.addAll(list, "a", "b", "c", "d", "e");
//public static void shuffle(List<?> list) 打亂順序:打亂集合順序
Collections.shuffle(list);
System.out.println(list);
}
}
方法: * - public static <T> void sort(List<T> list) 將集合中元素按照默認規則排序
注意:
* sort(List<T> List)使用前提
* 被排序的集合裏邊存儲的元素,必須實現Comparable,重寫接口中的方法compareTo定義排序的規則
* Comparable接口的排序規則:
* 自己(this) - 參數 //升序
* 參數 - 自己(this) //降序
實例:
import java.lang.*;
import java.util.*;
/*
* - java.utils.Collections是集合工具類,用來對集合進行操作。部分方法如下:
* - public static <T> boolean addAll(Collection<T> c, T...elements):往集合中添加一些元素//public static <T> boolean addAll(Collection<T> c, T...elements):往集合中添加一些元素
* - public static void shuffle(List<?> list) 打亂順序:打亂集合順序
* - public static <T> void sort(List<T> list) 將集合中元素按照默認規則排序
* - public static <T> void sort(List<T> list, Comparator<? super T>):將集合中元素按照指定規則排序
* 注意:
* sort(List<T> List)使用前提
* 被排序的集合裏邊存儲的元素,必須實現Comparable,重寫接口中的方法compareTo定義排序的規則
* Comparable接口的排序規則:
* 自己(this) - 參數 //升序
* 參數 - 自己(this) //降序
* */
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list01 = new ArrayList<>();
list01.add(1);
list01.add(3);
list01.add(2);
System.out.println(list01);//[1, 3, 2]
//public static <T> void sort(List<T> list) 將集合中元素按照默認規則排序
Collections.sort(list01);
System.out.println(list01);//[1, 2, 3]
ArrayList<String> list02 = new ArrayList<>();
list02.add("a");
list02.add("c");
list02.add("b");
System.out.println(list02);//[a, c, b]
Collections.sort(list02);
System.out.println(list02);//[a, b, c]
ArrayList<Person> list03 = new ArrayList<>();
list03.add(new Person("張三", 18));
list03.add(new Person("李四", 20));
list03.add(new Person("王五", 15));
System.out.println(list03);
Collections.sort(list03);
System.out.println(list03);
}
}
//Person 類
import java.util.Objects;
public class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(){
}
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;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//重寫排序的規則
@Override
public int compareTo(Person o){
//return 0;認爲元素都是相同的
//自定義比較的規則,比較兩個人的年齡(this, 參數Person)
return this.getAge() - o.getAge();//升序排序
}
}
方法: public static <T> void sort(List<T> list, Comparator<? super T>):將集合中元素按照指定規則排序
* Comparator 和 Comparable 的區別
* Comparable:自己(this)和別人(參數)比較,自己需要實現Comparable接口,重寫比較的規則compareTo方法
* Comparator:相當於找一個第三方的裁判,比較兩個
實例:
import java.lang.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list01 = new ArrayList<>();
list01.add(1);
list01.add(3);
list01.add(2);
System.out.println(list01);//[1, 3, 2]
Collections.sort(list01, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;//升序
//return o2 - o1;//降序
}
});
System.out.println(list01);//[1, 2, 3]
ArrayList<Person> list02 = new ArrayList<>();
list02.add(new Person("迪麗熱巴", 18));
list02.add(new Person("古力娜扎", 20));
list02.add(new Person("馬兒扎哈", 17));
list02.add(new Person("迪麗熱巴", 17));
System.out.println(list02);
Collections.sort(list02, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
//return o1.getAge() - o2.getAge();
if(o1.getAge() == o2.getAge())
return o1.getName().charAt(0) - o2.getName().charAt(0);
else return o1.getAge() - o2.getAge();
}
});
System.out.println(list02);
}
}