7 回答
TA贡献1854条经验 获得超8个赞
你可以这样做:
package test;
public class Test2 {
public static void main(String[] args) throws Exception {
String number = "153004";
String sorted = sortStringNumbers(number);
System.out.println(sorted);
}
private static String sortStringNumbers(String numbersString) {
return numbersString.chars().mapToObj(c -> Character.toString((char)c)).sorted().collect(Collectors.joining());
}
}
输出:
001345
TA贡献1817条经验 获得超6个赞
您可以将您的 int 转换为一个 String 并拆分成一个数组,接下来只需对流进行排序并加入一个 String。
String[] number = "190".split("");
String list = Stream.of(number).sorted().collect(Collectors.joining());
System.out.println(list); //Output: 019
TA贡献1757条经验 获得超7个赞
您可以使用号码的数字创建一个列表并对该列表进行排序。
List<Integer> nums=new ArrayList<>();
for(int num=toSort;num>0;num/=10){
nums.add(num%10);
}
Collections.sort(nums);
String result="";//If you want the result to be a integer (e.g. 190 will convert into 19 and not 019), change this to int result=0;
for(Integer num:nums){
result+=num.intValue();
/*int:
result+=num.intValue();
result×=10;*/
}
TA贡献1808条经验 获得超4个赞
根据我对您问题的理解,您正在尝试对 int 中的数字进行排序。这可以通过转换为 CharArray、排序然后返回结果来完成。请注意,这对于负数将失败。
fun sortInt(int: Int): Int = int.toString() .toCharArray() .sorted() .joinToString("") .toInt()
编辑:现在这也适用于 0 位数字。
fun sortInt(int: Int): String = int.toString() .toCharArray() .sorted() .joinToString("")
TA贡献1843条经验 获得超7个赞
有很多方法可以实现这一目标。这是一个:
final String sorted = "190".chars()
.sorted()
.mapToObj(c -> Character.valueOf((char)c).toString())
.collect(Collectors.joining())
和
final String sorted = "190".chars()
.sorted()
.collect(StringBuilder::new, (sb, c) -> sb.append((char) c), StringBuilder::append)
.toString();
而且,作为将(我认为)在 Java 7 中工作的单行代码(不是生产代码,但很有趣)...
final String sorted = Arrays.toString(new PriorityQueue<>(Arrays.asList("190".split("")))
.toArray(new String[0]))
.replaceAll("\\W+", "");
TA贡献1816条经验 获得超6个赞
List<Integer> nums = new ArrayList<>();
String total = "";
for( int num = 190; num>0; num/=10 ){
nums.add(num%10);
}
Collections.sort(nums);
for (Integer x : nums) {
total += x.toString();
}
Integer finalResult = Integer.parseInt(total);
Log.i(TAG,"=== finalResult "+ finalResult);
O/P : 019
TA贡献1825条经验 获得超6个赞
如果你使用这个,你应该小心:
sortInt(190)
fun sortInt(int: Int): Int = int.toString() .toCharArray() .sorted() .joinToString("") .toInt()
输出将是 19 而不是 019
添加回答
举报