Java 如何";“复制”;是否将数组操作复制到另一个数组?
这可能是一个简单的问题,但我有两个数组,每个数组大约有1000个元素,它们被称为Java 如何";“复制”;是否将数组操作复制到另一个数组?,java,arrays,Java,Arrays,这可能是一个简单的问题,但我有两个数组,每个数组大约有1000个元素,它们被称为posXArray和posYArray。我想对posYArray进行数字排序(首先是最小的数字),但我想对posXArray的元素应用相同的操作 例如,如果posYArray的元素[56]是最小的元素,我希望posXArray的元素[56]也移动到[0] 如何在Java中以简单/良好的方式实现这一点 非常感谢你的帮助 由于数组似乎包含X和Y坐标,也许更好的选择是创建一个包含这两个值的坐标类,实现compariable
posXArray
和posYArray
。我想对posYArray
进行数字排序(首先是最小的数字),但我想对posXArray
的元素应用相同的操作
例如,如果posYArray
的元素[56]是最小的元素,我希望posXArray
的元素[56]也移动到[0]
如何在Java中以简单/良好的方式实现这一点
非常感谢你的帮助 由于数组似乎包含X和Y坐标,也许更好的选择是创建一个包含这两个值的坐标类,实现
compariable
,只需使用内置算法进行单个数组排序?您可以实现您选择的任何排序算法,首先进行比较检查(posXArray),然后同时交换两个数组中元素的位置。创建一个类,如:
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实现了可比较的{
int x;
int-y;
@凌驾
公共整数比较(XYPos o){
int res=this.y-o.y;
如果(res==0){
res=这个.x-o.x;
}
返回res;
}
}
然后:
XYPos
创建一个长度相同的
整数[]idx
,并用数字0到999(或任何数字)填充它,然后使用一个比较器对该数组进行排序
public int compare(Integer a, Integer b) {
return posYArray[a] - posYArray[b];
}
这将为您提供一个到其他数组的索引数组,即最小的Y值将是posYArray[idx[0]]
,其对应的X将是posXArray[idx[0]]
,等等。如果您不想保持间接性,您可以通过idx
值对原始数组重新排序
如果您经常做这类事情,您可能希望了解哪些提供了直接对原始类型(如
int
)进行操作的收集和比较类型,从而避免了对整数进行装箱和取消装箱的需要。感谢您的回答!这当然是一种可能性,而且会起作用-简单:我认为是这样,很好:同意,不是这样t(事实上,我对建议创建一个类的答案之一投了赞成票):)