有没有办法对不在数组中的整数进行排序?
我知道您可以将sort(arrayList)
类型的想法与数组一起使用,但示例...
如果我有单独的变量,可以完成类似的任务吗?例如,如果我有三个数字,我可以对它们进行排序,以便它们从大到小打印吗?
谢谢!
如果您的 ArrayList 包含对象,则这些对象的类型可以实现 Comparable ,因此您可以使用 Collections 的排序方法。如果需要,您可以将 ArrayList 转换为数组并以这种方式对其进行排序,但看起来这不是您想要的。下面是使用这两种方法的快速示例:
void setup(){
int count = 100,now;
stroke(192,0,0);strokeWeight(count/width);
//make up some data
ArrayList<Pair> p = new ArrayList<Pair>();
for(int i = 0 ; i < count ; i++) {
Pair pair = new Pair(i,random(10,100));
p.add(pair);
float x = map(i,0,count,i,width);
float y = map(pair.distance,10,100,0,50);
line(x,50,x,50-y);
}
now = millis();
//Sort typed ArrayList by converting to array first
println("sort typed array: n");
Pair[] s = new Pair[p.size()];
p.toArray(s);
Arrays.sort(s);
println("took " + (millis()-now) + " ms");
now = millis();
//Sort using Collections
println("nnsorting typed array list: n" );
Collections.sort(p);
println("took " + (millis()-now) + " ms");
stroke(0,192,0);
for(int i = 0 ; i < count ; i++) {
Pair pair = p.get(i);
float x = map(i,0,count,i,width);
float y = map(pair.distance,10,100,0,50);
line(x,100,x,100-y);
}
}
class Pair implements Comparable<Pair>{
public int id;
public float distance;
Pair(int i, float d){
id = i;
distance = d;
}
int compareTo(Pair p){
if (p.distance > this.distance) return 1;
else if(p.distance < this.distance) return -1;
else return 0;
}
String toString(){ return id+":"+distance; }
}