输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
需要自定义一种排序方法,得到一种新的排序方式。可以用两种方法
- 使用Collections工具类
- 使用lambda表达式
使用Collections工具类
Collections.sort(list, new Comparator<Integer>() {
public int compare(Integer str1, Integer str2) {
String s1 = str1 + "" + str2;
String s2 = str2 + "" + str1;
return s1.compareTo(s2);
}
});
compareTo方法返回值 | 含义 |
---|---|
负整数 | 当前对象的值 < 比较对象的值 , 位置排在前 |
0 | 当前对象的值 = 比较对象的值 , 位置不变 |
正整数 | 当前对象的值 > 比较对象的值 , 位置排在后 |
System.out.println("2".compareTo("1"));
// 打印1
顺序其实主要是看-1,-1决定其是否要调整顺序
如果你想升序,那么o1比o2小就是我想要的;所以返回-1,类比成false;表示我不想调整顺序
如果你想降序,那么o1比o2小不是我想要的;所以返回1,类比成true;表示我想调整顺序
Java中Collections.sort()的使用!
使用lambda表达式
必须在Java8及以上的环境中
list.sort((a, b) -> (a + "" + b).compareTo(b + "" + a));
java8 - sort 方法