最近没事写了一个彩票开奖情况统计程序,其中碰到了需要对数字出现的次数排序的问题,因为涉及到对象属性的排序,觉得有必要总结一下,没多少技术含量,只是认识了一个新的接口,权当学习了,呵呵。
以前碰到排序的问题大部分都只是针对单序列的,直接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)等等。
其实采用这种方法并不是为了缩短时间复杂度,我个人觉得这样能让代码显得更简洁些,多调用些已经存在的类和方法总好过自己去实现一套差不多的类或方法。
分享到:
相关推荐
本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和自定义比较器(Comparator)来完成的,对于复杂的数据排序需求具有很高的灵活性。...
总结一下,当需要对Java对象数组按多个属性排序时,我们可以: 1. 实现`Comparator`接口并自定义`compare()`方法。 2. 使用lambda表达式或方法引用来创建`Comparator`实例,使代码更加简洁。 3. 对于数组,使用`...
**Java对象属性排序** 如果我们有一个对象类,其中包含一个Map属性,我们可以先对Map进行排序,然后再处理对象列表。假设我们有以下User类: ```java public class User { private String name; private Map, ...
在Java编程中,对List集合中的对象进行多属性排序是一项常见的任务。这通常涉及到自定义比较逻辑,以满足复杂的数据排序需求。在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在...
以上三种方法都能满足按对象属性排序的需求,选择哪种取决于具体的应用场景。如果需要保持集合的有序性,`TreeSet`是很好的选择;如果数据存储在数组中,`Arrays.sort()`简洁高效;而`List`的使用者则可以利用`...
这篇博客“List中保存对象,按对象中某一属性排序【含程序源码】”恰好提供了这样的解决方案。下面我们将深入探讨这个主题。 首先,让我们理解列表(List)和对象排序的基本概念。列表是Java集合框架的一部分,它允许...
### List对象属性排序知识点 #### 一、概述 在Java编程中,经常需要对`List`集合中的对象按照特定属性进行排序。传统的方法是在每个实体类中重写`Comparable`接口或提供比较器(`Comparator`),这不仅增加了代码...
可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组
默认情况下,队列按自然顺序进行排序,即所有元素必须实现`Comparable`接口,或者在创建队列时提供一个`Comparator`实例。 1. **创建优先队列** 创建一个无参的`PriorityQueue`会自动创建一个最小优先队列,其中...
总的来说,Java中的面向对象思想为实现各种排序算法提供了灵活的结构和强大的功能。通过封装、继承和多态,我们可以构建出易于理解和维护的代码,同时适应不同的排序需求。在开发过程中,理解并熟练运用这些面向对象...
`fromObject()`是org.json库提供的方法,它能将Java对象转换为JSON表示。 5. 最后,返回排序后的JSONObject。 这个方法只适用于单层JSON对象,即JSON对象中不包含嵌套的JSON对象或数组。如果需要处理嵌套的JSON...
Java对象排序基础 在Java中,我们可以对两种类型的元素进行排序:原始类型(如int、char)和对象。对于对象,排序主要涉及到`Comparable`接口和`Comparator`接口。 - **Comparable接口**:如果一个类的实例需要被...
Java实现对象按照其属性排序的两种方法示例 Java语言中,对象按照其属性排序是非常常见的操作,例如对学生对象按照成绩或年龄进行排序。在Java中,可以使用两种方法来实现对象按照其属性排序,分别是使用Comparable...
总的来说,Java对象排序是通过实现`Comparable`接口或使用`Comparator`来完成的。理解这两个接口的用法,并熟练掌握`Collections.sort()`和`Arrays.sort()`的使用,是成为熟练Java开发者的必备技能。在实际编程中,...
本主题将深入探讨如何使用SortedSet接口来实现Java对象的中文排序,并通过源码分析理解其工作原理。 首先,SortedSet是Java集合框架中的一个接口,它继承自Set接口并添加了排序的特性。SortedSet的主要实现类有...
这里我们将深入探讨如何使用Java实现文件按时间、大小等属性进行排序的功能。 首先,我们要引入`java.io.File`类,它是Java中用于表示文件和目录的基本类。我们可以创建`File`对象来代表一个具体的文件或目录,然后...
Java 8 新特性将 List 中按指定属性排序过滤重复数据的方法 Java 8 新特性将 List 中按指定属性排序过滤重复数据的方法是 Java 8 中一个非常有用的功能,它可以帮助开发者快速地对 List 中的数据进行排序和过滤,以...