dav*_*xxx 11
你可以这样做但不仅仅是 Collections.sort()
0Integer 所在的索引:0从列表中删除索引List.remove(int)所在的位置int.Collections.sort()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]