gpt4 book ai didi

java - 将数组的一部分移到Java中的前面

转载 作者:行者123 更新时间:2023-12-05 09:22:48 25 4
gpt4 key购买 nike

我有一个类似的数组:

[null, null, 3, 4, null]

我想把它改成类似这样的数组:

[3, 4, null, null, null]

我知道如何手动完成,但它看起来很难看。是否有任何内置(使用最少的自定义代码)方法来做到这一点? (也许是 System.arraycopy 的东西)

我完成了这样的事情(感谢@Braj 的想法):

@Test
public void test() {
Integer[] k = new Integer[]{null, null, 3, 2, 1};
k[1] = null;
Arrays.sort(k, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
System.out.println(o1);
if (o1 == null) return 1;
else if(o2 == null) return -1;
else return 0;
}
});
assertArrayEquals(
new Integer[]{3, 2, 1, null, null},
k
);
}

如果有人感兴趣,请输入 a bigger problem which tried to solve with this code

最佳答案

使用Arrays.sort(T[],Comparator)并通过Comparator根据自己的逻辑进行排序。

在这里阅读更多内容并找到示例代码


这是在最后推送 null 值的同时对数组进行排序的示例代码。

注意:(根据您的需要更改它,未完全测试)

    final Integer[] data = new Integer[] { null, null, 3, 4, null };
Arrays.sort(data, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if(o1 != null && o2!=null){
return o1.compareTo(o2);
}else if(o2 != null){
return o2;
}else{
return Integer.MIN_VALUE; // null values in the end
}
}
});

System.out.println(Arrays.toString(data));

输出:

   [3, 4, null, null, null]

编辑

如果您只对最后移动 null 值感兴趣,请在下面的帖子中找到由@Dmitry Ginzburg 回答的示例代码

关于java - 将数组的一部分移到Java中的前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24586030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com