首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sort ArrayList of ArrayList of objects

Sort ArrayList of ArrayList of objects
EN

Stack Overflow用户
提问于 2017-04-21 23:20:25
回答 2查看 1.1K关注 0票数 0

我在使用比较器对对象的ArrayList的ArrayList进行排序时遇到了问题,我有以下简单的代码:

代码语言:javascript
复制
        ArrayList<ArrayList<Object>> office = new ArrayList<ArrayList<Object>>(15);
        ArrayList<Object> objectArrayList1 = new ArrayList<Object>(15);
        objectArrayList1.add("Denver");
        objectArrayList1.add(108);
        office.add(objectArrayList1);

        ArrayList<Object> objectArrayList2 = new ArrayList<Object>(15);
        objectArrayList2.add("NewYork");
        objectArrayList2.add(109);
        office.add(objectArrayList2);

       [[Denver, 118], [NewYork, 109]]

如何按数字或字符串对其进行排序?

EN

回答 2

Stack Overflow用户

发布于 2017-04-21 23:24:15

您必须使用Collections.sort()覆盖compare()方法,并创建一个新的比较器。因为你使用的是object,所以很难写一个通用的排序器。以下是对自定义对象的arrayList进行排序的示例

代码语言:javascript
复制
 Collections.sort(finalList, new Comparator<FinalAccount>()
        @Override
        public int compare(FinalAccount o1, FinalAccount o2) {
            Double o1Double = o1.reductionAmount;
            Double o2Double = o2.reductionAmount;
            return o1Double.compareTo(o2Double);
        }

    });

但同样,这只适用于一种类型的对象,泛型会使事情变得混乱,因为你可能有任何类型的对象。

票数 0
EN

Stack Overflow用户

发布于 2017-04-22 01:19:21

你的数据模型有点不对劲。假设您想要存储城市的数据及其相关的“分数”以进行排序,那么您需要一个对象列表,该列表可以包含城市及其分数。这个实体必须具有可比性。

例如,用于

代码语言:javascript
复制
Team implements Comparable {
 String city;
 int score;
 Team(String city, int score) {
  this.city = city;
  this.score = score; 
 }

@Override
 public int compareTo(Team other) {
   return this.score - other.score;
 } 
}

现在您可以对团队的ArrayList进行排序了

代码语言:javascript
复制
List<Team> teams = Arrays.asList(new Team("New York", 101), new Team("Denver", 108));
Collections.sort(teams); // sorts in-place

您还可以使用自定义比较器,如

代码语言:javascript
复制
Collections.sort(teams, new Comparator<Team>(){
@Override
public int compare(Team t1, Team t2) {
 return t1.city.compareTo(t2.city);
}
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43546413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档