Java对排除特定值的整数列表进行排序

Dav*_*zzi 1 java sorting integer list

这是我的问题:我有一个整数列表:7,0,2
如果我使用Collections.sort(list)结果排序列表是:0,2,7 但我想排序列表排除0排序过程,所以输出如下所示:2,0,7.
可能吗?
提前致谢.

编辑:我忘了提到我的3种可能的情况:1)列表只包含一个"0"和两个数字2)列表包含两个"0"和一个数字3)列表包含三个"0"而没有数字

dav*_*xxx 11

你可以这样做但不仅仅是 Collections.sort()

  1. 在变量中检索并存储0Integer 所在的索引:
  2. 0从列表中删除索引List.remove(int)所在的位置int.
  3. 使用排序列表 Collections.sort()
  4. 0在存储索引的列表中添加.

在代码中,它给出:

List<Integer> list = ...;
int indexOf = list.indexOf(Integer.valueOf(0));
list.remove(indexOf);
Collections.sort(list);
list.add(indexOf, Integer.valueOf(0));
Run Code Online (Sandbox Code Playgroud)

问题编辑后更新以处理0列表中具有多个案例的案例.

我更新了,因为这个案例要处理起来有点复杂.
由于它删除了多个元素,因此索引不再是原始大小的索引.

public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(7);
    list.add(0);
    list.add(2);
    list.add(9);
    list.add(0);
    list.add(1);
    list.add(0);
    list.add(4);

    Set<Integer> indexesOf = new HashSet<>();
    int indexOf = -1;
    int shift = 0;
    while ((indexOf = list.indexOf(Integer.valueOf(0))) != -1) {
        indexesOf.add(indexOf + shift++);
        list.remove(indexOf);
    }

    Collections.sort(list);
    indexesOf.stream().forEach(index -> list.add(index, Integer.valueOf(0)));
    System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)

输出:

[1,0,2,4,0,7,0,9]