Tap*_*ose 3 java collections null list
我需要在结尾处放置空对象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);
}
}
Run Code Online (Sandbox Code Playgroud)
我期待着更高效,更智能的方式来做到这一点.是否可以在实际列表中进行交换,以便将null节点放在最后,这样我就不需要另外两个列表(nullStrings,result)和额外的迭代.
排序不适用于我的情况.我的示例代码仅用于测试目的.实际上我有一个不同类型的对象.排序也将打破这个位置.
说我有这个null, Obj2, Obj1,如果做任何像排序可能会发生Obj1, Obj2, null.但我需要Obj2, Obj1, null.
Fed*_*dy2 10
您可以使用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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,根据此值具有相等值的元素Comparator将不会重新排序.来自Collections.sort:
这种类型保证是稳定的:相同的元素不会因排序而重新排序.