1. String[] 字符串数组
1) 正序排序
public String[] sortA(String[] strings){
Arrays.sort(strings, (o1,o2) -> (o1 + o2).compareTo((o2 + o1)));
return strings;
}
2)逆序排序
public String[] sortA(String[] strings){
Arrays.sort(strings, (o1,o2) -> (o2 + o1).compareTo((o1 + o2)));
return strings;
}
2. String 字符串
public String SortB(String str, int n){
char[] chars = str.toCharArray();
Arrays.sort(chars);
String s = new String(chars);
return s;
}
3. int[] 整数数组
public int[] largestNumber(int[] nums) {
String[] asStrs = new String[nums.length];
for (int i = 0; i < nums.length; i++) {
asStrs[i] = String.valueOf(nums[i]);
}
Arrays.sort(asStrs, (o1,o2) -> (o1 + o2).compareTo((o2+o1)));
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(asStrs[i]);;
}
return nums;
}
4.int[]降序排序
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] arr = {{1,1},{3,1},{5,1},{2,0},{2,0}};
for (int i = 0; i < 5; i++) {
System.out.println(Arrays.toString(arr[i]));
}
Arrays.sort(arr, (o1, o2) -> o2[0]-o1[0]);
System.out.println("----------------------------");
for (int i = 0; i < 5; i++) {
System.out.println(Arrays.toString(arr[i]));
}
System.out.println(A(arr));
}
5.int[]两个条件排序
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
long nums[][]=new long[n][2];
for (int i = 0; i < n; i++) {
nums[i][0]=sc.nextInt();
nums[i][1]=sc.nextInt();
}
Arrays.sort(nums, new Comparator<long[]>() {
public int compare(long[] o1, long[] o2) {
if(o1[1]==o2[1]){
return (int) (o2[0]-o1[0]);
}
return (int) (o1[1]-o2[1]);
}
});
for (int i = 0; i < n; i++) {
System.out.println(Arrays.toString(nums[i]));
}
}