Java:基于MyObject变量</myobject>对ArrayList <myobject>进行排序

时间:2013-01-24 19:37:07

标签: java sorting arraylist

  

可能重复:
  Sorting a collection of objects
  Sorting an ArrayList of Contacts based on name?

快速提问:

我有ArrayList<MyObject>MyObject个对象。我希望它们基于整数变量MyObject进行排序。

有没有现成的方法来实现这个,还是我必须自己写一个quicksort / mergesort?

感谢您的时间, 迪米瑞斯

4 个答案:

答案 0 :(得分:2)

您需要实现Comparable接口并覆盖compareTo。 下面的示例我假设有一个成员变量'name',您将在其上比较对象。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

class MyObject implements Comparable<MyObject>{
private String name;
private int id;

public String getName() {
    return name;
}

public MyObject(String name, int id) {
    super();
    this.name = name;
    this.id = id;
}
@Override
public int compareTo(MyObject o) {
    return name.compareTo(o.getName());
}   
@Override
public String toString() {
    return name+"\t"+id+"\n";
}
}

         public class Test {
         public static void main(String[] args) {
            List<MyObject> list = new ArrayList<MyObject>();
     list.add(new MyObject("John", 10));
     list.add(new MyObject("Mark", 11));
     list.add(new MyObject("Steve", 9));
     Collections.sort(list);
     System.out.println("Sorted list is :"+list);
 }
 }

答案 1 :(得分:1)

您想要查看比较器,它们允许您以任何方式定义排序顺序。这是文档http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html

答案 2 :(得分:1)

您可以使用Array.sort(...)您只能为Comparator实施MyObject或将Comparable设为{{1}}。

答案 3 :(得分:1)

您还可以使用Collections.sort()库并为您的对象传入您的馆藏(ArrayList)和专门设计的Comperator

http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html[enter link description here][1]