String[] a = {"658",null,"456","78","98",null,"52"};有一个类似于这样的数组,现在我想把null的值移到最后面。类似于:String[] a = {"658","456","78","98","52",null,null};条件是只能用一个for循环,并且尽量不要用第二个变量。 总的来说,就是在数组本身内进行排序。。
String[] a = {"658",null,"456","78","98",null,"52"}; String[] b = new String[a.length]; for (int i = 0, j = 0; i < a.length; i++) { if (a[i] != null) { b[j++] = a[i]; } } a = b; 我想还是不要浪费时间了,想那么复杂的算法干什么,实用就是真理,呵呵
把前面的null替换靠后面的非null就可以了.
String[] b = new String[a.length];
for (int i = 0, j = 0; i < a.length; i++) {
if (a[i] != null) {
b[j++] = a[i];
}
}
a = b;
我想还是不要浪费时间了,想那么复杂的算法干什么,实用就是真理,呵呵
a仅仅是b的一个指针吧?
public static void main(String[] args) {
String[] a = {"658",null,"456","78","98",null,"52"};
int p = a.length-1;
for(int i=p; i>=0; i--) {
if(a[i]==null) {
a[i] = a[p];
a[p--] = null;
}
}
for(int i=0; i<a.length; i++ ) System.out.println(a[i]);
}
}
输出:
658
52
456
78
98
null
null
Arrays.sort(a,new Comparator(){ public int compare(Object o1, Object o2) {
if(o1==null)return 1;
if(o2==null)return -1;
return 0;
}
}
);
System.out.println(Arrays.asList(a));