package com.niuKe;
import java.util.Arrays;
import java.util.Comparator;
/**
* 字典排序:自定义排序规则
* 排序规则为:加入两个数 32 12
* 1)先将数转化为字符串 "32" ->x "12"->y 组合:分别对应结果: 3212(m) 1232(n)
* 2)排序规则 如果 x+y>y+x m>n 可以找出最大值
* x+y<y+x m<n 可以找出最小值
* 3)根据这两个排序规则,可以去对一个字符串数组中的字符串进行排序。
* 4)最后将排序好了的字符串数组连起来就是结果了
*/
public class test1 {
public static void main(String[] args) {
String result = "";
int[] arr = new int[]{3,30,34,5,9};
// 将数组中的数字转化为字符串,存进一个字符串数组中
String[] strings = new String[arr.length];
// 遍历
for (int i=0;i<arr.length;i++){
strings[i] = String.valueOf(arr[i]);
}
// 对字符串数组进行排序,排序规则自定义
// x+y>y+x m>n
// x+y<y+x m<n
// 定义排序规则 这个排序规则其实就是:两个相邻的数拼接,前拼后<后拼前 的
Comparator<String> com = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return (s1+s2).compareTo(s2+s1); // 如果s1和s2换一下顺序,那么就是求最大值了
}
};
Arrays.sort(strings,com);
// 输出排序后的字符串数组
for (String string:strings){
System.out.print(string+" ");
}
System.out.println();
// 将字符串数组中的字符串取出来,然后合成
for (String string:strings){
result += string;
}
// 输出结果
System.out.println(result);
}
}
把数组排成最小的数-java实现
最新推荐文章于 2023-08-07 11:06:23 发布