Java 将对象w.r.t列表排序到特定成员/国家

Java 将对象w.r.t列表排序到特定成员/国家,java,string,list,sorting,Java,String,List,Sorting,我有一个java对象列表,它有4个成员 int id; String name; String age; int order; 我想用w.r.t name对这个对象的列表进行排序或者实现一个比较器,如下所示: public static void main(String[] args) throws IOException { List<MyObject> list = new ArrayList<MyObject>(); // add your o

我有一个java对象列表,它有4个成员

int id;
String name;
String age;
int order;
我想用w.r.t name对这个对象的列表进行排序

或者实现一个比较器,如下所示:

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);
        }
    });
}
要么实现一个比较器,如下所示:

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);
        }
    });
}

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

private static class MyComparator implements Comparator<MyType>
{

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

}

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

private static class MyComparator implements Comparator<MyType>
{

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

}

查看。

查看。

代表myString的值对所有成员/状态进行排序,即如果myString是name,则按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();
          }
      }
  });

代表myString的值对所有成员/状态进行排序,即如果myString是name,则按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();
          }
      }
  });

o、 名称:名称不是静态的,请使用getter方法instead@Eng.Fouad:很好的一点,您可以将Comparator作为成员类。我正在使用这些Collections.sortlist,新的Comparator{in if-else,例如ifmyString.equalsname{//按名称排序}else{//按年龄排序}。但它会引发异常。它会引发哪个异常?如果它是NullPointerException,则需要1没有任何空值,或者2在比较器中创建空保护。但是,我建议您为不同的任务使用两个比较器,一个用于名称排序,另一个用于年龄排序。我正在为这两个任务使用单独的比较器。通过ws-java.lang.ClassNotFoundException://类是我使用此代码的类。名称:名称不是静态的,请使用getter方法instead@Eng.Fouad:很好的一点,您可以将Comparator作为成员类。我正在使用这些Collections.sortlist,新的Comparator{in if-else,例如ifmyString.equalsname{//按名称排序}else{//按年龄排序}。但它会引发异常。它会引发哪个异常?如果它是NullPointerException,则需要1没有任何空值,或者2在比较器中创建空保护。但是,我建议您为不同的任务使用两个比较器,一个用于名称排序,另一个用于年龄排序。我正在为这两个任务使用单独的比较器。通过ws-java.lang.ClassNotFoundException://我在其中使用此代码我在使用这些集合。sortlist,新的比较器{在if-else中,例如ifmyString.equalsname{//sort by name}else{//sort by age}。但它引发异常。我之所以收到异常,是因为我多次使用“Collections.sortlist,new Comparator”。我发布了工作代码的答案。我正在使用这些Collections.sortlist,new Comparator{in if else,例如ifmyString.equalsname{//sort by name}else{//sort by age}。但它引发异常。我之所以收到异常,是因为我多次使用“Collections.sortlist,new Comparator”。我发布了工作代码的答案。age不应该是数字int或float吗?age不应该是数字int或float吗?