值I有以下代码,同时保持的类型的位置这种种物品的混合阵列:重用输入字符串[]与从ArrayList中
例如:
[20, "abc", "moose", 2,1] turns into [1, "abc", "moose", 2, 20]
算法:
public class Algorithm {
public static String[] sortMixedArray(String[] input){
if (input.length == 0){
return input;
}
// make new arraylist for strings and numbers respectively
List<String> strs = new ArrayList<String>();
List<Integer> numbers = new ArrayList<Integer>();
// add values to the arraylist they belong to
for (String item : input){
if (NumberUtils.isNumber(item)){
numbers.add(Integer.valueOf(item));
} else {
strs.add(item);
}
}
// sort for O(nlogn)
Collections.sort(strs);
Collections.sort(numbers);
// reuse original array
for (int i = 0; i < input.length; i++){
if (NumberUtils.isNumber(input[i])) {
input[i] = String.valueOf(numbers.remove(0));
} else {
input[i] = strs.remove(0);
}
}
return input;
}
public static void main(String[] args) {
String[] test = new String[] {"moo", "boo"};
System.out.println(Arrays.toString(sortMixedArray(test)));
}
我有一个问题两个部分:
1.是否在数组和ArrayList之间切换高效?也就是说,如果我的输入必须是一个数组,那么我应该到处使用数组而不是ArrayList。
2.将数组列表项放回数组的最佳方式是什么?我正在检查类型,有没有更好的方法?