将对象列表w.r.t排序到特定成员/状态

时间:2011-08-18 06:52:54

标签: java string list sorting

我有一个包含4个成员的java对象列表。

int id;
String name;
String age;
int order;

我想对w.r.t名称

这个对象的列表进行排序

4 个答案:

答案 0 :(得分:4)

要么实现Comparator,请执行以下操作:

public static void main(String[] args) throws IOException {

    List<MyObject> list = new ArrayList<MyObject>();

    // add your objects to the list     

    Collections.sort(list, new Comparator<MyObject>() {
        @Override
        public int compare(MyObject o1, MyObject o2) {
            return o1.name.compareTo(o2.name);
        }
    });
}

或者您可以在Comparable上实施MyObject界面:

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

    @Override
    public int compareTo(MyObject o) {
        return name.compareTo(o.name);
    }
}

public static void main(String[] args) throws IOException {
    ....
    Collections.sort(list); // with the comparable interface
}

答案 1 :(得分:2)

您可以创建一个比较器,通过名称比较该类型的2个对象,并使用此比较器进行排序:

private static class MyComparator implements Comparator<MyType>
{

    @Override
    public int compare(MyType o1, MyType o2)
    {
        return o1.getName().compareTo(o2.getName());
    }

}

然后排序:

 Collections.sort(list, myComparator);

答案 2 :(得分:0)

查看Arrays.sort

答案 3 :(得分:0)

代表 myString 的值对所有成员/州进行排序,即如果myString是name,则按名称排序,反之亦然。

  Collections.sort(list, new Comparator<com.MyObject>() {

          public int compare(com.MyObject object1, com.MyObject object2) {

            if(myString.equalsIgnoreCase("name")){
            return object1.getName().compareTo(object2.getName());

          }else if(myString.equalsIgnoreCase("age")){
            return object1.getAge().compareTo(object2.getAge());

          }else{
            return object1.getOrder() - object2.getOrder();
          }
      }
  });