java - 使用多个条件对 ArrayList 进行排序

标签 java sorting arraylist

假设我有一个数组列表 MyArrayList<MYObject>

myObject 类看起来像:

public class myObject
{
      String name;
      Int age;
      String : city;
}

我的虚拟数据是这样的:

name : martin ,  age : 20 , city : NY
name : felix ,  age : 19 , city : LA
name : brian ,  age : 21 , city : NY
name : brian ,  age : 19 , city : NY

现在我想按此顺序对 myArraylist(其中包含上述数据)进行排序 -

name : felix , lastname : 19 , city : LA
name : brian , lastname : 21 , city : NY
name : martin , lastname : 20 , city : NY
name : brian , lastname : 19 , city : NY

如您所见,以上数据以两种方式排序 - 首先按城市,然后再按年龄,所以这就是我想做的,我想排序arrayList 按顺序排列然后我想通过保持第一个顺序按另一个顺序排序

谁知道我该怎么做??届时请告诉我

如果我的问题不够清楚,让我知道我会解决

最佳答案

您可以创建一个比较器,首先按城市进行比较,然后按年龄进行比较。像这样:

Comparator<MyObject> comparator = new Comparator<MyObject>(){
    @Override
    public int compare(final MyObject o1, final MyObject o2){
       if(!o1.getCity().equals(o2.getCity())){
          return o1.getCity().compareTo(o2.getCity());
       }else{
          return o1.getAge().compareTo(o2.getAge());
        }
    }
  };

Collections.sort(myArrayList,comparator);

编辑:

我使用了 Integer 类的“compareTo”方法,您不能在 int 原始类型上调用它。如果您使用 int 作为年龄,您可以只写一个 if 语句来进行比较。

关于java - 使用多个条件对 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41402963/

相关文章:

java - 如何从 WebView 中检索域名?

java - Mockito ArgumentCaptor 正在捕获大量重复记录

没有限定名称的Java反射

java - 如何根据 Java 中的几个条件从列表中删除重复项

java - 如何将包含整数的 ArrayList 转换为原始 int 数组?

java - IndexOutOfBoundsException : Index: 0, 大小:0 2D Arraylist

java - 如何在JFrame中显示原始图像和模糊图像?

java - hibernate getResultList() 的默认排序顺序

python 对元组列表进行排序

Android 使用 ArrayList 向多个联系人发送短信