我有一个对象列表,我想用定义的顺序对它进行排序.
对于前者我有一个字段字符串颜色的对象.我想在颜色字段上对我的列表进行排序,使它总是首先是白色而不是蓝色而不是其他所有(如果可能的话,alph.有序但不是必需的):
Before sorting:         After sorting:
orange                  white
white                   blue
green                   yellow
brown                   orange
yellow                  black
black                   brown
...                     ...

有这么简单的方法吗?

编辑:

我必须添加一个更复杂的…如果可以有更多颜色具有相同的名称/基数怎么办?对于前者whiteX,whiteY,whiteZ,blueA,blueB,……所有的白人都必须比所有的黄色首先出现,而不是所有的黄色.用比较器解决这个问题仍有可能吗? (我无法想象……)

解决方法

是的,您可以创建一个 Comparator来创建排序策略,或者定义实现 Comparable的类的自然顺序

作为旁注:

It is strongly recommended,but not strictly required that
(x.compareto(y)==0) == (x.equals(y))

使用比较器的示例:

class MyClass {

private Color color;
private String someOtherProperty;
public static final Comparator<MyClass> colorComparator = new MyComparator();

//getter and setter

static class MyComparator implements Comparator<MyClass>{

            @Override
            public int compare(MyClass o1,MyClass o2) {
                // here you do your business logic,when you say where a color is greater than other
            }    
}

}

并在客户端代码中.

例:

List<MyClass> list = new ArrayList<>();
//fill array with values
Collections.sort(list,MyClass.colorComparator );

阅读更多:Collections#sort(..)

如果你想定义你的类的自然顺序,只需定义

public class MyClass implements Comparable<MyClass>{

        @Override
        public int compareto(MyClass o) {
           // do business logic here
        }
}

并在客户端代码中:

Collections.sort(myList); // where myList is List<MyClass>

java – 使用特定顺序对(数组)列表进行排序的更多相关文章

  1. 在Xcode中,有没有办法对方法的下拉列表进行排序

    在Xcode中,有一个首选项可以按字母顺序对“编辑器函数”弹出窗口进行排序,这很棒.但是,这并未考虑同样出现在此列表中的#pragma标记标题.将这个列表首先按字母顺序排序,然后按#pragmaheading,然后按方法排序会很棒.这可能吗?

  2. Swift - 选择排序算法

    思想每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。步骤找到第一小(大)的元素,放在第一个位置找到从第二个元素到末尾的元素中第二下(大)的元素,放入第二个位置以此类推代码结果特性时间复杂度:O(n^2)==n的平方稳定性:不稳定其他新blog地址www.livefor.cn

  3. android – 如何对CursorLoader结果进行排序?

    我使用CursorLoader查询结果,这不是我想要在ListFramgenet中显示的顺序.怎么排序呢?我用它来设置适配器:创建加载器:嗯,查询结果有纬度和经度.我想计算我的位置和这些结果之间的距离.并按距离asc排序.怎么排序呢?任何答案都会被批评解决方法这实际上非常简单:由此:对此:请记住,如果您的提供商中有一些方法可以检查投射并引发异常,您必须在进行测试时将其注释掉,或者将新列添加到官方投影数组中.

  4. php – 排序字符串,首先是字母,然后是字母内的字母

    我想在PHP中对字符串进行排序,并且匹配应该首先在子字符串的第一个字母上完成,然后在整个字符串的字母上完成.例如,如果有人搜索,则列表包含结果应该是使用常规排序或类似的东西不起作用,Adolf先于其他排序.有人知道怎么做吗?usort允许您根据回调进行排序.例子

  5. 木桶排序-扑克牌

  6. freemaker+dwr+springmvc的配置

    --出现异常时的处理方式,debug为在后台输出异常并抛出异常,html_debug为在后台和页面输出异常,rethrow为不做处理直接抛出异常,ignore为在后台输出异常但在页面忽略异常-->ignoretruestatic/comm/commons.ftlaspage获取工具类spring核心文件扫描控制层

  7. 如何在JavaFx中创建可重新排序的TableView

    我有一个JavaFxTableView.我想允许用户单击并拖动以重新排序表行.我似乎无法找到任何方法来做到这一点,但它似乎在GUI中非常常见.解决方法下面是一些通过拖动行来重新排序ListView中的行的代码.拖动鸟类重新排序.TableView的实现有点类似.

  8. java – 使用特定顺序对(数组)列表进行排序

    我有一个对象列表,我想用定义的顺序对它进行排序.对于前者我有一个字段字符串颜色的对象.我想在颜色字段上对我的列表进行排序,使它总是首先是白色而不是蓝色而不是其他所有:有这么简单的方法吗?如果可以有更多颜色具有相同的名称/基数怎么办?所有的白人都必须比所有的黄色首先出现,而不是所有的黄色.用比较器解决这个问题仍有可能吗?(我无法想象……

  9. jquery – JQGrid:’beforeSelectRow’和’sortableRows’ – 排除列可拖动?

    非常感谢任何帮助:)解决方法如果添加以下附加代码,则可以解决该问题如果鼠标将位于操作按钮上,则代码将禁用jqgrid的可排序功能.因此,您只能在另一列中对行进行排序.您可以看到修改后的demohere.

  10. Java 8,Lambda:在分组列表中排序并将所有组合并到列表中

    基于以下答案:https://stackoverflow.com/a/30202075/8760211如何通过stud_id对每个组进行排序,然后通过stud_location返回一个包含所有学生的List作为分组的结果,然后按stud_id排序?将它作为现有Lambda表达式的扩展会很棒:我需要基于原始列表中元素的顺序进行分组.结果将如下所示:我尝试过以下方法:但这不起作用.解决方法如果我找对你

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部