在平时开发的过程中,经常会遇到需要对数组、集合中元素按规则进行排序,本文记录在开发过程中可能遇到的情况以及相关的完整代码示例。
知识点
- Comparable<T>接口
实现了该接口的对象,必须重写compareTo方法,对象实现了该接口,则该对象具有排序功能,比如String、Integer等。 - Comparator<T>接口
要实现自定义排序器的时候,需要实现该接口。当某个类不具备排序功能或者已有的排序功能不足以支撑你需求的时候,就是自定义排序器登场的时候了。比如String内置的排序实现按字符顺序排序,那我想按字符串长度排序咋办呢?这时就可以自定义实现Comparator的对象了。 - 数组(比如String[])排序使用Arrays.sort
- 集合(比如List<T>)排序使用Collections.sort
实例
1. 默认String排序示例
1.1 数组排序用法
String[] strArr = new String[]{
"zhangsan","lisi","wangwu"};
//数组默认按字符升序排序
Arrays.sort(strArr);
System.out.println("默认按字母升序排序:");
for (String str:strArr) {
System.out.println(str);
}
1.2 集合排序用法
List<String> strList = new ArrayList<>();
strList.add("zhangsan");
strList.add("lisi");
strList.add("wangwu");
//集合默认按字符升序排序
Collections.sort(strList);
System.out.println("默认按字母升序排序:");
for (String str:strList) {
System.out.println(str);
}
- 以上两个例子都是输出:
2.自定义排序器,String数组按字符串长度倒序
- 创建自定义排序器StringComparator
package com.simon.interfacedemo.sortdemo.stringdemo;
import java.util.Comparator;
/**
* @Description: 通过实现Comparator接口,实现自定义排序
*/
public class StringComparator implements Comparator<String>{
/**
* 按字符串长度降序排序
*/
@Override
public int