我需要将空对象放置在末尾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,结果)和额外的迭代。
Update
排序不适用于我的情况。我编写的示例代码只是为了测试目的。实际上我有不同类型的对象。排序也会破坏位置。
说我有这个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:
这种排序保证是稳定的:相同的元素不会因排序而重新排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)