gpt4 book ai didi

java - 不同类别的比较

转载 作者:行者123 更新时间:2023-12-01 15:42:10 27 4
gpt4 key购买 nike

让我给出一些代码,以便您可以看到我使用以下 Android 的 java 代码做了什么。举例来说,我有以下两个类,一个是从另一个类扩展而来的:

class MyClassOne {
protected float x, y;
MyClassOne(float x, float y) {
this.x = x; this.y=y;
}
public void printY(){
System.out.print(y);
}
}

class MyClassTwo extends MyClassOne {
protected String stringSpecificToThisClass;
private long longSpecificTothisClass;
MyClassTwo(float x, float y, String s, long l) {
this.x=x; this.y=y;
this.longSpecificTothisClass= l; this.stringSpecificTothisClass=s;
}
}

然后通过以下方式初始化这些类

private ArrayList<MyClassOne> mClassOne = new ArrayList<MyClassOne>();
private ArrayList<MyClassTwo> mClassTwo = new ArrayList<MyClassTwo>();
for(int i=0;i<5;i++){
Random random = new Random(10);
mClassOne.add(new MyClassOne(i*12, random.nextInt()));
mClassTwo.add(new MyClassOne(i*11, random.nextInt()));
}

现在,我想做的是根据 y 的值对两个数组列表进行比较和排序。

我对单个列表执行此操作的方式如下:

private Object[][] mSort(){
Object[][] mSort = new Object[mClassOne.size()][2];
for(int i = 0; i<mClassOne.size(); i++){
mSort[i][0] = i;
mSort[i][1] = mClassOne.get(i).y;
}
Arrays.sort(mSort, new Comparator<Object[]>(){
@Override
public int compare(Object[] obj1, Object[] obj2){
Float comp1 = (Float)obj1[1]; Float comp2 = (Float) obj2[1];
return comp1.compareTo(comp2);
}
});
return mSort;
}

Object[][] mSort = mSort();
for(int i=0;i<mClassOne.size();i++){
int z = (Integer)mSort[i][0];
mClassOne.get(z).printY();
}

它可以输出如下内容:

2, 4, 5, 6, 9

希望上面的代码足够清晰,以便其他人可以看到我正在尝试做什么;问题是:

“如何组合两个 ArrayList,然后按各自的 y 值对它们进行排序。”

我正在寻找的答案

ArrayList<MyClassOne> mTest = new ArrayList<MyClassOne>();
mTest.addAll(mClassOne);
mTest.addAll(mClassTwo);
Collections.sort(mTest, new Comparator<MyClassOne>(){
@Override
public int compare(MyClassOne obj1, MyClassTwo obj2) {
return (int) (obj1.getY() - obj2.getY()); }
}
);
// mTest is now sorted, verified by ~ foreach(mTest) {print mTest.getY(); }

最佳答案

嗯,你可以使用 Comparator<MyClassOne>应该能够处理 MyClassTwo实例也是如此,从MyClassTwo开始延伸MyClassOne .

只需创建一个List<MyClassOne> ,添加其他列表的所有元素并排序。

如果类不能相互扩展,请引入一个公共(public)接口(interface)。

关于java - 不同类别的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7876561/

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