分享一道常见的面试题目,虽然大家都知道,但是往往会忽视掉这个问题。
题目,输入一段字符串数字,将这个字符串数字进行排序,比如 "35219"
代码实现
第一种方法,使用string.length()分隔
代码实现如下
public static void StringToIntArray1(String number){
List<Integer> temps=new ArrayList<Integer>();
for(int i=0;i<number.length();i++){
int value=Integer.parseInt(number.charAt(i)+"");
temps.add(value);
}
System.out.println(temps);
Collections.sort(temps);
System.out.println(temps);
}
运行将打印如下信息
[3, 5, 2, 1, 9]
[1, 2, 3, 5, 9]
第二种方法,使用String.toCharArray()方法
代码实现如下
public static void StringToIntArray2(String number){
List<Integer> temps=new ArrayList<Integer>();
char[] chars=number.toCharArray();
for(char c:chars){
int value=Integer.valueOf(c-0x30);
temps.add(value);
}
System.out.println(temps);
Collections.sort(temps);
System.out.println(temps);
}
运行将打印如下信息
[3, 5, 2, 1, 9]
[1, 2, 3, 5, 9]
下面这3句代码写法是一样的
int value=Integer.parseInt(number.charAt(i)+"");
int value=Integer.valueOf(c-0x30);
int value=Integer.valueOf(c-48);
ox30是16进制的写法,48是10进制写法
Integer.valueOf比较的Ascii码