在下面的代码中,对象someObj
具有两个属性,float x
和int pnt
.
创建ArrayList<someObj>
,然后使用Comparator
接口根据x对其进行排序.属性pnt
旨在在排序之后跟踪元素.
我复制了https://www.geeksforgeeks.org/collections-sort-java-examples/的代码 并对其进行了一些修改,以适应我的需要.我想知道可能出了什么问题,它就是不能完成它的分类工作.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Random;
public class ArrayListSorting {
public static void main(String[] args) {
// 20 random numbers will be used for the test
final int sz=20;
Random rand = new Random();
ArrayList<someObj> oList=new ArrayList<someObj>();
// Build the list
for(int i=0;i<sz;i++) {
oList.add(new someObj(i,rand.nextFloat()));
}
// Print the list before sorting
for(int i=0;i<sz;i++) {
System.out.println(i+"\t"+oList.get(i).getX());
}
Collections.sort(oList, new sorter());
// ...and after sorting
for(int i=0;i<sz;i++) {
int j=oList.get(i).getPnt();
System.out.println(j+"\t"+oList.get(i).getX());
}
}
}
class someObj {
private float x;
private int pnt;
public someObj(int pnt,float x) {
this.pnt=pnt;
this.x=x;
}
public int getPnt() {
return pnt;
}
public float getX() {
return x;
}
}
class sorter implements Comparator<someObj> {
public int compare(someObj a, someObj b) {
return (int)(a.getX() - b.getX());
}
}