首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >java中的ArrayList排序

java中的ArrayList排序
EN

Stack Overflow用户
提问于 2012-04-11 01:43:12
回答 3查看 423关注 0票数 0

我是具有实现比较接口的自定义对象的多个ArrayLists。有可能这些多个列表具有相同的对象。我的要求是每个列表都可以有自己的顺序

例如:

列表1可以包含4个对象Obj2、Obj4、Obj1、Obj3列表2可以包含5个对象Obj4、Obj3、Obj5、Obj1、Obj2

如果我在List1中为每个自定义对象分配(0,1,2,3,4)的id,并在ArrayList上使用sort方法,我想如果我有一个单独的列表,它将对我起作用。

但是我不能这样做,因为对于List2,相同的对象需要不同的顺序。有没有一种方法,我可以使用比较器,并依赖于集合框架为我排序,而不是我必须为每个ArrayList维护一个单独的排序列表?

任何帮助都将不胜感激。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-11 01:51:09

编写一个自定义比较器,然后使用Collections.sort(列表,比较器)。您可以有两个(或需要多少个)比较器,以便根据不同的参数对对象进行排序。

票数 1
EN

Stack Overflow用户

发布于 2012-04-11 01:52:26

使用自定义编写的比较器impl:

代码语言:javascript
代码运行次数:0
运行
复制
Collections.sort(list, new Comparator<Comparable<?>>() {
        @Override
        public int compare(final Comparable o1, final Comparable o2) {
            // Compare two objects, might not be the same type
        }
    });

或者,最好让所有相互比较的类实现一个公共接口CustomComparableIntf,然后实现Comparable<CustomComparableIntf>,以便将它们作为该接口的实现进行比较,而不是作为它们的具体类型进行比较。

票数 0
EN

Stack Overflow用户

发布于 2012-04-11 04:48:09

为了以不同的顺序保留列表,您需要有此列表的副本。如果只将多个引用保留在一个列表中,那么对一个引用进行排序也会影响其他引用。

不要担心一个列表有多个副本。列表本身也有作为参考的内容。因此,如果您从另一个列表创建一个新列表,您将创建该列表的副本,但不会创建列表中元素的副本。它们被保留在列表中作为参考,不会受到任何影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10093731

复制
相关文章

相似问题

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