我正在尝试按特定顺序对数组进行排序。例如,我有这个数组
{6,1,1,5,6,1,5,4,6}
我希望它们按照这个顺序排序
{4,1,6,5}
预期的新数组是
{4,1,1,1,6,6,6,6,5}
我的想法是这样的,
public class Sort {
static int[] list = { 6, 1, 1, 5, 6, 1, 6, 4, 6 };
static int[] sorted = { 4, 1, 6, 5 };
static int[] newList = new int[list.length];
static int count = 0;
public static void main(String[] args) {
for (int i = 0; i < sorted.length; i++) {
for (int j = 0; j < list.length; j++) {
if (list[j] != sorted[i])
continue;
else
newList[count++] = sorted[i];
}
}
}
}
它工作得很好,但是,我不确定这是否是在速度和内存方面最快、最简单的方法,因为列表可能有太多数字。
最佳答案
您可以使用带有自定义比较器的java内置排序算法。
public static void main(String[] args) {
Integer[] list = { 6, 1, 1, 5, 6, 1, 6, 4, 6 };
int[] sorted = { 4, 1, 6, 5 };
Map<Integer, Integer> order = new HashMap<>();
for (int i = 0; i < sorted.length; i++)
order.put(sorted[i], i);
Arrays.sort(list, (a ,b) -> order.get(a) - order.get(b));
System.out.println(Arrays.toString(list));
}
输出为[4, 1, 1, 1, 6, 6, 6, 6, 5]
。
关于java - java中按特定顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51571451/