用Collections.sort方法对list排序有两种方法
第一种是list中的对象实现Comparable接口,如下:
/**
* 根据order对User排序
*/
public class User implements Comparable<User>{
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public int compareTo(User arg0) {
return this.getOrder().compareTo(arg0.getOrder());
}
}
测试一下:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
//此处add user2再add user1
list.add(user2);
list.add(user1);
Collections.sort(list);
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
第二种方法是根据Collections.sort重载方法来实现,例如:
/**
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
主类中这样写即可:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List<User> list = new ArrayList<User>();
list.add(user2);
list.add(user1);
Collections.sort(list,new Comparator<User>(){
public int compare(User arg0, User arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
}
});
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
择优用之。
分享到:
相关推荐
Java中的Collections.sort排序是Java.util.Collections类中的一个静态方法,用于对列表进行排序。下面将详细介绍Collections.sort排序的使用和实现机制。 Collections.sort()方法的使用: Collections.sort()方法...
在Java编程语言中,`Collections.sort()` 是一个非常重要的函数,它用于对集合中的元素进行排序。这个函数是 `java.util.Collections` 类的一个静态方法,适用于列表(List)类型的集合。`Collections.sort()` 可以...
Java中的`Arrays.sort()`和`Collections.sort()`是两个常用的排序函数,它们分别用于对数组和集合进行排序。这两个函数在内部实现上有所不同,但都基于高效的排序算法。 首先,`Collections.sort()`方法在处理列表...
在Java编程中,集合框架是处理数据的重要工具,而Collections.sort方法则是对列表(List)进行排序的关键函数。本文将深入探讨两种使用Collections.sort方法对List排序的方法。 首先,第一种方法是让List中的对象实现...
在这个场景下,我们使用`Collections.sort()`函数对一个包含Map对象的List进行排序,然后将排序后的数据适配到ListView中。以下是关于这个主题的详细解释。 **一、Map与List的关系** 在Java中,Map是一种键值对的...
例如,Collections.sort()方法接受一个Comparator实例,这是一个高阶函数的例子,因为它接受一个函数作为参数来定义元素的排序顺序。 6. **函数式编程的优点**: - 更少的副作用:函数式编程倾向于避免改变状态,...
《Java Generics and Collections》是Java开发者必备的参考资料,它深入探讨了Java编程中的泛型(Generics)和集合(Collections)这两个核心概念。在Java编程中,泛型和集合框架是提高代码效率、可读性和类型安全性...
Java的`sort`方法采用了一种称为TimSort的稳定排序算法,由Tim Peters在Python中设计,后被引入Java。TimSort是一种混合排序算法,结合了插入排序(对于小数组高效)和归并排序(保证稳定性及良好性能)的特点。 ##...
Collections.sort()是Java中的一种静态方法,用于对集合进行排序。Collections.sort()方法可以对List、Set等集合进行排序,按照自然顺序或自定义的Comparator进行排序。 知识点6:foreach foreach是Java中的一种...
这里提到了可以使用 `java.util.Arrays` 和 `java.util.Collections` 提供的方法来实现高效拷贝。下面详细介绍这两种方法: - **使用 `java.util.Arrays.copyOf()`:** `java.util.Arrays.copyOf()` 方法是拷贝...
在本节课程中,我们将深入探讨模板模式以及其在Java JDK中的实际应用,特别是通过分析Collections.sort()函数的实现。模板模式是一种行为设计模式,它允许我们在定义算法的骨架的同时,延迟部分步骤的具体实现,使得...
在Java编程语言中,工具类(Utility Class)是那些提供了静态方法或常量,用于执行特定任务或提供通用功能的类。这些类不包含公共构造器,通常是为了避免实例化,因为它们的设计目的就是作为静态服务。以下是28个...
Java中的排序主要依赖于`java.util.Arrays`类和`java.util.Collections`类提供的方法。对于数组,我们可以使用`Arrays.sort()`方法;对于集合,我们可以使用`Collections.sort()`方法。这两个方法都可以对基本类型和...
`java.util.Arrays.sort()` 和 `java.util.Collections.sort()` 是两个主要的排序函数,它们提供了多种重载形式,以适应不同的数据类型和排序需求。 1. `Arrays.sort(int[])` 和 `Arrays.sort(int[], int, int)` ...
- 当我们使用`Collections.sort()`或`Arrays.sort()`方法对对象列表或数组进行排序时,如果默认的自然顺序不适合我们的需求,就可以提供一个实现了`Comparator`接口的类实例作为参数,自定义比较规则。 2. 使用...
Collections.sort(names, String::compareToIgnoreCase); ``` 4. **默认方法**:在接口中引入了默认方法,允许在不破坏现有实现的情况下为接口添加新方法。这使得在库升级时,不需修改所有实现了该接口的类。例如...
Java 中的 Arrays 类提供了对这些类型的 sort 方法,可以用来对简单类型的数组进行排序。例如: ```java int[] arr = {2, 3, 1, 10, 7, 4}; System.out.print("before sort: "); for (int i = 0; i < arr.length; i...
每个工具类都有其特定的应用场景和使用方法,理解并熟练运用这些工具类是成为Java开发高手的重要一步。在实际项目中,合理地利用这些工具类可以有效地提高代码质量和运行效率,同时减少错误和维护成本。通过阅读源码...
Java中的回调函数是一种设计模式,它允许一个对象在特定事件发生时调用另一个对象的方法。在Java中,回调机制通常通过接口实现,因为Java不支持像C++那样的指针。以下是对回调函数及其在Java中如何工作的详细说明: ...
`Arrays.sort()`方法可用于对数组进行排序,而`Collections.sort()`用于列表。`BinarySearch`方法可以对已排序的数组或列表进行二分查找。 9. **算法实现**: Java可以方便地实现各种算法,如动态规划、贪心、...