在没有数组的情况下执行与排序(数组列表)相同的操作???在处理中



有没有办法对不在数组中的整数进行排序?

我知道您可以将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;    }
}

相关内容

  • 没有找到相关文章

最新更新