java – 在List的末尾放置null

我需要在List的末尾放置null对象.以下是我为此目的所做的一个示例:

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);
    }
}

我期待着更高效,更智能的方式来做到这一点.是否可以在实际列表中进行交换,以便将null节点放在最后,这样我就不需要另外两个列表(nullStrings,result)和额外的迭代.

更新

排序不适用于我的情况.我的示例代码仅用于测试目的.实际上我有一个不同类型的对象.排序也将打破这个位置.

说我有这个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;
 }

请注意,根据此比较器具有相等值的元素将不会重新排序.从Collections.sort开始:

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

https://stackoverflow.com/questions/17762099/placing-null-at-the-end-of-the-list

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 在List的末尾放置null