目录
工具类常用方法 addAll(); shuffle();
package cn.itcast.day12.demo02;
import java.util.ArrayList;
import java.util.Collections;
/**
* @author admin
* @version 1.0.0
* @ClassName Demo10.java
* @Description TODO
* @createTime 2021年09月25日 11:15:00
*/
/**
* java.util.Collections是集合工具类,从来对集合进行操作 部分方法如下
* Public static <T> void sort (List<T> list);将集合中元素按照默认规则排序
*
* 注意:
* sort(List<T> list)使用前提
* 别排序的集合里面存储的元素,必须实现Comparable,重写接口中的compareTo方法 即定义排序的规则
*
*Comparable接口排序的规则
* 自己(this) - 参数 :升序
* 反过来就是降序
*
*
*/
public class Demo10 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(5);
list.add(3);
System.out.println("list = " + list);//list = [1, 5, 3]
//Public static <T> void sort (List<T> list);将集合中元素按照默认规则排序
/**
* Collections方法只能传list集合 不能传set集合 因为是static方法 所以可以直接类名.方法进行调用
*/
Collections.sort(list);//默认是升序
System.out.println(list);//[1, 3, 5]
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("aa");
arrayList.add("dd");
arrayList.add("bb");
arrayList.add("cc");
System.out.println("arrayList = " + arrayList);//arrayList = [aa, dd, bb, cc]
Collections.sort(arrayList);
System.out.println(arrayList);//[aa, bb, cc, dd]
System.out.println("===============================");
ArrayList<Hotel> hotelArrayList = new ArrayList<>();
hotelArrayList.add(new Hotel("zhangsan",15));
hotelArrayList.add(new Hotel("lisi",30));
hotelArrayList.add(new Hotel("wangwu",18));
System.out.println("hotelArrayList = " + hotelArrayList);
//hotelArrayList = [Hotel{name='zhangsan', age=15}, Hotel{name='lisi', age=30}, Hotel{name='wangwu', age=18}]
Collections.sort(hotelArrayList);
//这个地方如果没有实现Comparable接口 重写ComparTo方法的话 是报错的
System.out.println(hotelArrayList);
/**
* return this.getAge() - o.getAge();
* return this.age - o.age; 这两个方法任选其一 重写ComparTo方法之后 都可以进行正常排序
*
*/
//[Hotel{name='zhangsan', age=15}, Hotel{name='wangwu', age=18}, Hotel{name='lisi', age=30}]
}
}
自定义类型排序Hotel类
package cn.itcast.day12.demo02;
/**
* @author admin
* @version 1.0.0
* @ClassName Hotel.java
* @Description TODO
* @createTime 2021年09月25日 11:26:00
*/
public class Hotel implements Comparable<Hotel>{
private String name;
private int age;
public Hotel() {
}
public Hotel(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;
}
@Override
public String toString() {
return "Hotel{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
/**
* 重写排序的规则
* @param o
* @return
*/
@Override
public int compareTo(Hotel o) {
// return 0;//认为元素都是相同的
//自定义比较的规则 比较两个人的年龄(this,参数Person)
// return this.getAge() - o.getAge(); //年龄升序排序
// return this.age - o.age;
return o.age - this.age;//年龄降序排序
}
}
源码图奉上有助于理解