gpt4 book ai didi

java - 将 null 放在列表的末尾

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:58 26 4
gpt4 key购买 nike

我需要将空对象放在 List 的末尾。这是我为此目的所做的示例:

public static void main(String... args) {
List<String> strings = Arrays.asList(new String[]{"A", null, "B"});

for(String string : strings) {
System.out.println(string);
}

System.out.println("==================");

List<String> result = new ArrayList<String>();
List<String> nullStrings = new ArrayList<String>();

for(String string : strings) {
if(string != null) {
result.add(string);
} else {
nullStrings.add(string);
}
}

result.addAll(nullStrings);

for(String string : result) {
System.out.println(string);
}
}

我期待有一种更高效、更智能的方式来做到这一点。是否可以在实际列表中进行交换,以便将空节点放在末尾,这样我就不需要其他两个列表(nullStrings,结果)和额外的迭代。

更新

排序不适用于我的情况。我制作的这个示例代码只是为了测试目的。其实我有一个不同类型的对象。排序也会打破位置。

假设我有这个 null, Obj2, Obj1,如果做任何类似排序的事情,它可能会发生 Obj1, Obj2, null。但我需要 Obj2, Obj1, null

最佳答案

您可以使用 Collections.sort 对其进行排序和自定义 Comparator .

这里是比较代码:

@Override 
public int compare(String left, String right) {
if (left == right) {
return 0;
}
if (left == null) {
return 1;
}
if (right == null) {
return -1;
}
return 0;
}

请注意,根据此 Comparator 具有相等值的元素不会重新排序。来自 Collections.sort :

This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.

关于java - 将 null 放在列表的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762099/

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