[英]how to copy elements that are in an array but not in another on a third array
[英]How to “copy” an array operation to another array?
这可能是一个简单的问题,但我有两个大约1000个元素的数组,它们被称为posXArray
和posYArray
。 我想用数字排序posYArray
(最低数字)但我希望posXArray
的元素应用于它们相同的操作...
例如,如果posYArray
element [56]是最小的,我希望posXArray
元素[56]也被移动到[0]。
如何以简单/好的方式在Java中实现它?
非常感谢你的帮助!
由于数组似乎包含X和Y坐标,或许更好的选择是创建一个包含两个值的坐标类,实现Comparable
并且只需要一个数组来使用内置算法进行排序?
创建一个类,如:
public class XYPos implements Comparable<XYPos> {
int x;
int y;
@Override
public int compareTo(XYPos o) {
int res = this.y - o.y;
if(res == 0) {
res = this.x - o.x;
}
return res;
}
}
然后:
XYPos
数组 创建一个相同长度的Integer[] idx
并用数字0到999(或其他)填充它,然后使用比较器对该数组进行排序
public int compare(Integer a, Integer b) {
return posYArray[a] - posYArray[b];
}
这将为您提供其他数组的索引数组,即最小的Y值将为posYArray[idx[0]]
,其对应的X将为posXArray[idx[0]]
等。如果您不想维护间接,您可以通过idx
值重新排序原始数组。
如果你经常做这类事情,你可能希望看一下fastutil ,它提供直接在原始类型(如int
上运行的Collection和Comparator类型,避免使用box和unbox Integers。
您可以实现您选择的任何排序算法,仅对第一个(posXArray)进行比较检查,然后同时交换两个数组中元素的位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.