gpt4 book ai didi

Java - 如何在列表开头移动特定整数?

转载 作者:行者123 更新时间:2023-12-01 20:17:09 25 4
gpt4 key购买 nike

我正在寻找一种简单的方法来重新排序 Java 整数列表中的特定元素。

例如,我有一个包含元素的列表:

0,1,2,3,4,5,6,7,8,9,10,0,2,2,2,3,3,6,6,6,...

我需要始终将所有“6”作为起始元素,然后是所有“7”,然后是所有“3”,然后是其他整数(无论是否排序)。所以预期的结果是:

6,6,6,7,3,3,3,0,1,2,4,5,8,9,10,0,2,2,2,...

最佳答案

对于这种情况,您可以使用通用比较器:

class CustomSorting<T> implements Comparator<T> {

private List<T> orderList;

public CustomSorting(T ... elements) {
this.orderList = Arrays.asList(elements);
}

@Override
public int compare(T a, T b) {
return weight(a) - weight(b);
}

private int weight(T a) {
int index = orderList.indexOf(a);
return index >= 0 ? index : Integer.MAX_VALUE;
}
}

用法:

    List<Integer> list = Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,0,2,2,2,3,3,6,6,6);

System.out.println(list);
Collections.sort(list, new CustomSorting<>(6,7,3));
System.out.println(list);

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 2, 2, 2, 3, 3, 6, 6, 6]
[6, 6, 6, 6, 7, 3, 3, 3, 0, 1, 2, 4, 5, 8, 9, 10, 0, 2, 2, 2]

关于Java - 如何在列表开头移动特定整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45566513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com