gpt4 book ai didi

java - 在Java中对匹配的数组进行排序

转载 作者:IT老高 更新时间:2023-10-28 20:26:53 35 4
gpt4 key购买 nike

假设我有两个数组(在 Java 中),

int[] 数字;和 int[] 颜色;

数字中的每个第 i 个元素都对应于其颜色中的第 i 个元素。例如,数字 = {4,2,1} 颜色 = {0x11、0x24、0x01};表示数字 4 是颜色 0x11,数字 2 是 0x24,等等。

我想对 numbers 数组进行排序,但仍然保留它,以便每个元素与其颜色对匹配。

例如。数字 = {1,2,4}; 颜色 = {0x01,0x24,0x11};

最干净、最简单的方法是什么?数组有几千个项目,所以最好放在适当的位置,但不是必需的。做一个 Arrays.sort() 和一个自定义比较器有意义吗?最好尽可能使用库函数。

注意:我知道“最佳”解决方案是为这两个元素创建一个类并使用自定义比较器。这个问题的目的是询问人们最快的编码方式。想象一下,在一场编程比赛中,你不会想要制作所有这些额外的类、比较器的匿名类等。更好的是,忘记 Java;你将如何用 C 编写代码?

最佳答案

如果您使用索引保留第三个数组并对其进行排序,则可以将 sort() 与自定义比较器一起使用,从而使数据保持不变。

Java 代码示例:

Integer[] idx = new Integer[numbers.length];
for( int i = 0 ; i < idx.length; i++ ) idx[i] = i;
Arrays.sort(idx, new Comparator<Integer>() {
public int compare(Integer i1, Integer i2) {
return Double.compare(numbers[i1], numbers[i2]);
}
});

// numbers[idx[i]] is the sorted number at index i
// colors[idx[i]] is the sorted color at index i

请注意,您必须使用 Integer 而不是 int,否则您不能使用自定义比较器。

关于java - 在Java中对匹配的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/112234/

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