要求:有一个String数组,根据数组内的字符串长度进行倒序排序
不多说直接上代码
假设数组为:List<String> listTest1 = Arrays.asList("111", "2", "3333", "44") ;
方法一:重写sort接口
List<String> listTest = Arrays.asList("111", "2", "3333", "44") ;
listTest.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(o1.length() > o2.length()){
//这里注意,比较o1与o2的大小,若o1 大于 o2 默认会返回 1
//但是sort排序,默认的是升序排序,所以重写的时候将值改写返回-1,就会变成倒叙排序
return -1;
}else if(o1.length() == o2.length()){
return 0;
}else if(o1.length() < o2.length()){
return 1;
}
return 0;
}
});
System.out.println(listTest1);
输出结果为:[3333, 111, 44, 2]
方法二:java8新特性 Stream流
List<String> listTest = Arrays.asList("111", "2", "3333", "44") ;
//同理升序的话应该为aName.length() - bName.length(),因为这里要求倒叙,所以前面加上-号
Comparator<String> compByLength = (aName, bName) -> -(aName.length() - bName.length());
listTest = listTest.stream().sorted(compByLength).collect(Collectors.toList());
System.out.println(listTest);
输出结果:[3333, 111, 44, 2]