题目描述
给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。
当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。
输入描述
给定一个非空数组,其元素数据类型为32位有符号整数,数组长度[1, 1000]
输出描述
输出排序后的数组
用例1
输入
1,2,5,-21,22,11,55,-101,42,8,7,32
输出
1,-21,11,-101,2,22,42,32,5,55,7,8
package odjava.分100;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.StringJoiner;
public class 整型数组按个位值排序_66 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 以逗号分隔
String[] arr = sc.nextLine().split(",");
// 调用排序方法并打印结果
System.out.println(getResult(arr));
}
// 排序方法,根据整数的个位值对整数数组进行排序
public static String getResult(String[] arr) {
// 使用 Arrays.sort 方法对整数数组进行排序,使用 lambda 表达式根据整数的个位值进行比较
// Arrays.sort(arr, (a, b) -> a.charAt(a.length() - 1) - b.charAt(b.length() - 1));
Arrays.sort(arr, Comparator.comparingInt(a -> a.charAt(a.length() - 1)));
// 使用 StringJoiner 构建排序后的整数数组字符串
// 如果使用StringBuff 后缀需要减少","
StringJoiner sj = new StringJoiner(",");
for (String s : arr) {
sj.add(s); // 添加排序后的整数到 StringJoiner 中
}
return sj.toString(); // 返回排序后的整数数组字符串
}
}