Collections(集合工具类)
程序员文章站
2022-03-09 19:14:50
...
package com.qianfeng.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
public class Demo6 {
public static void main(String[] args) {
/*
* Collections:集合工具类,封装了操作集合的方法
*
* 要求:存储多个数据,要求数据可以重复,必须排序. 借助于Collection让ArrayList实现重复并排序
*/
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("php");
list.add("python");
list.add("htmls");
// 按照添加的顺序打印---自然顺序
System.out.println(list);// [java, php, python, htmls]
// 按照字典排序---升序排序
Collections.sort(list);// sort方法--能排序并实现重复
// 注意:这里要想实现字典排序,必须实现Comparable接口的comparaTo方法
System.out.println("字典排序:" + list);// 字典排序:[htmls, java, php, python]
// 按照从短到长的顺序排序--默认的方法无法实现,所以要创建自己的比较器,制定自己的比较规则
comWithLength comWithLength = new comWithLength();
Collections.sort(list, comWithLength);
System.out.println("从短到长的顺序排序:" + list);// 从短到长的顺序排序[htmls, java, php, python]
// 从长到短
// 利用现有的比较器进行反转得到的比较器,从长到短
Comparator<String> comparator = Collections.reverseOrder(comWithLength);
Collections.sort(list, comparator);
System.out.println("从长到短的顺序排序:" + list);// 从长到短的顺序排序[htmls, java, php, python]
// 字典排序的反转排序比较器
Comparator<String> comparator1 = Collections.reverseOrder();
Collections.sort(list, comparator1);
System.out.println("字典排序反转:" + list);// 字典排序反转:[python, php, java, htmls]
// 现有顺序反转
Collections.reverse(list);
System.out.println("现有顺序反转:" + list);// 现有顺序反转:[htmls, java, php, python]
// 求最大值--按照字典排序
String max = Collections.max(list);
System.out.println(max);// python
// 比较器自己制定规则---如按照长度比较
Collections.max(list, comWithLength);
System.out.println("最大值:" + max);// 最大值:python
}
}
// 创建比较器
class comWithLength implements Comparator<String> {
public int compara(String o1, String o2) {
int num = o1.length() - o2.length();
return num == 0 ? o1.compareTo(o2) : num;
}
@Override
public int compare(String arg0, String arg1) {
// TODO Auto-generated method stub
return 0;
}
}