在List的末尾放置null

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:

这种类型保证是稳定的:相同的元素不会因排序而重新排序.