最近没事写了一个彩票开奖情况统计程序,其中碰到了需要对数字出现的次数排序的问题,因为涉及到对象属性的排序,觉得有必要总结一下,没多少技术含量,只是认识了一个新的接口,权当学习了,呵呵。
以前碰到排序的问题大部分都只是针对单序列的,直接sort一下就完事了,如果是需要对某个对象的某一属性排序,或者说需要对key-value对进行排序,这就稍微有点麻烦了。
最弱智的方法就是直接对key-value进行冒泡或选择等基本排序,同时交换key和value,逻辑最简单,但是时间复杂度也是最高的。其次稍微好点的可以用快排或堆排序,这里就没必要细讲了,我主要想介绍的是实现Comparable接口的排序。
首先通过bean类去继承Comparable接口,实现方法compareTo,通过这个方法返回需要排序的value。然后再主类中将bean对象放入list中,调用Collections.sort(list)方法,就能按compareTo方法中的value值进行排序。下面是部分代码:
public class Number implements Comparable<Number> {
private String num;
private int count;
......
......
public int compareTo(Number o) {
return this.getCount() - o.getCount();
}
}
public List<Number> getSort(Number[] number) {
List<Number> list = new ArrayList<Number>();
for(int i=0;i<number.length;i++) {
list.add(number[i]);
}
Collections.sort(list);
return list;
}
ok,这样就能按照Number对象的count值对其进行排序了。当然,排序不仅仅限升序一种,还有降序排列Collections.sort(list, Collections.reverseOrder()),反转排列Collections.reverse(list)等等。
其实采用这种方法并不是为了缩短时间复杂度,我个人觉得这样能让代码显得更简洁些,多调用些已经存在的类和方法总好过自己去实现一套差不多的类或方法。
分享到:
相关推荐
天才之作:通过泛型,对List中对象多属性排序,支持设置各属性排序方式(动态属性),看了之后绝对让你震撼!
Java 对象属性map排序示例
主要介绍了Java实现储存对象并按对象某属性排序的几种方法,结合实例形式详细分析了Java储存对象并按对象某属性排序的具体实现方法与操作注意事项,需要的朋友可以参考下
java版本List中对象多属性排序.rar
优先队列-java可以选择属性和升序降序
可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组
下面小编就为大家分享一篇java根据List内对象的属性排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
主要介绍了Java实现对象按照其属性排序的两种方法,结合实例形式详细分析了Java对象按照其属性排序的两种实现方法与相关注意事项,需要的朋友可以参考下
NULL 博文链接:https://pridesnow.iteye.com/blog/1453660
主要介绍了java8新特性将List中按指定属性排序过滤重复数据的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
对集合中的对象进行排序,例如:List中存放了User对象,则可根据User对象的某一个属性进行顺序or倒序的排序
java中按找对象的某个属性进行升序降序的排序
主要介绍了Java实体类中Set按照对象的某个字段对set排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
比较两个对象的年龄大小,输出年龄较大者的对象的所有域信息(toString方法)。创建CollegeStudent类的一个对象;输出目前的CollegeStudent类对象的人数;修改对象的姓名、年龄和专业;然后再显示这个对象的全部信息...
不同类型对象组成的列表,根据某个属性或者多个属性进行排序
第2章 Java对象持久化技术概述 2.1 直接通过JDBC API来持久化实体域对象 2.2 ORM简介 2.2.1 对象-关系映射的概念 2.2.2 ORM中间件的基本使用方法 2.2.3 常用的ORM中间件 2.3 实体域对象的其他持久化模式...
主要介绍了java ArrayList集合中的某个对象属性进行排序的实现代码,需要的朋友可以参考下
App 对应 Application(程序入口方法):主类,创建Menu类的对象,调用Menu类的方法 Menu 对应 Menu (菜单类):定义多个方法,显示各种操作对应的菜单,并调用Operate类中的方法实现菜单中的内容 Operate 对应 ...
提供三个final方法,分别完成比较、探测、交换操作的同时,正确改变私有的M类对象成员的相关属性。并提供一个虚方法doSort,同时提供一个final方法sort(先设置M对象初值,然后调用doSort方法,返回M对象引用) (3)...