假设我有一个 [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()方法它将使用降序对元素进行排序,但这不是期望的输出。所以我会在这里做任何事情来获取输出,或者您能否提供示例代码逻辑部分来获取结果,谢谢。
您可以在列表上使用排序方法和自定义比较器来执行此操作。
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 必须位于列表末尾,而不修改任何其他顺序。