如何使用 Java 8 将特定元素移动到数组末尾而不影响其顺序

问题描述 投票:0回答:1

假设我有一个 [0,7,4,0,0,8,3,0,0,0,5,6] 数组,我必须将所有零放在其他数字之后的最后位置,而不修改它们的顺序。 所以输出数组应该是这样的:[7,4,8,3,5,6,0,0,0,0,0];

我如何使用 Java 8 获得所需的结果输出,任何人都可以建议

我尝试使用以下代码

public class ZeroLast {

    public static void main(String[] args) {
        
        List<Integer> list = Arrays.asList (0,7,4,0,0,8,3,0,0,0,5,6);
        
        list.sort(Comparator.reverseOrder());
    
                System.out.println(list);

    }

}

输出为:[8, 7, 6, 5, 4, 3, 0, 0, 0, 0, 0, 0]

我知道这是因为使用reverseOrder()方法它将使用降序对元素进行排序,但这不是期望的输出。所以我会在这里做任何事情来获取输出,或者您能否提供示例代码逻辑部分来获取结果,谢谢。

java sorting java-8 comparator
1个回答
0
投票

您可以在列表上使用排序方法和自定义比较器来执行此操作。

List<Integer> list = Arrays.asList(0,7,4,0,0,8,3,0,0,0,5,6);
list.sort((o1, o2) -> o1 == 0 ? 1 : (o2 == 0 ? -1 : 0));
System.out.println(list);

使用此全 0 必须位于列表末尾,而不修改任何其他顺序。

© www.soinside.com 2019 - 2024. All rights reserved.