java集合中对象某属性比较排序Comparable与Comparator

要对集合中的对象的某属性进行排序有两种方式。

a. 一种是要排序对象类实现comparable接口的compareTo方法;然后把对象放入list;然后调用Collections.sort(list);
b. 一种是不对要排序对象类做任何改动,创建Comparator接口的实现类C;然后 把对象放入list;然后调用Collections.sort(list, C);

a.eg

----------------------------------

 1 public class User implements Comparable<User>{
 2     private String name;
 3     private int age;
 4     private int gender;
 5     private String address;
 6
 7     public String getName() {
 8         return name;
 9     }
10
11     public void setName(String name) {
12         this.name = name;
13     }
14
15     public int getAge() {
16         return age;
17     }
18
19     public void setAge(int age) {
20         this.age = age;
21     }
22
23     public int getGender() {
24         return gender;
25     }
26
27     public void setGender(int gender) {
28         this.gender = gender;
29     }
30
31     public String getAddress() {
32         return address;
33     }
34
35     public void setAddress(String address) {
36         this.address = address;
37     }
38
39     public User() {
40         super();
41     }
42
43     public User(String name, int age, int gender, String address) {
44         super();
45         this.name = name;
46         this.age = age;
47         this.gender = gender;
48         this.address = address;
49     }
50
51
52     @Override
53     public int compareTo(User o) {
54         if(o!=null){
55             if(this.getAge()>o.getAge()){
56
57                return 1;
58             }else if(this.getAge()==o.getAge()){
59
60                return 0;
61
62             }
63
64        }
65         return -1;
66     }
67 }

-------------------------------------------main

 1 List<User> ulist = new ArrayList<User>();
 2 ulist.add(new User("wangbo",29,1,"长沙"));
 3 ulist.add(new User("wumei",44,1,"株洲"));
 4 ulist.add(new User("zhangjie",19,1,"岳阳"));
 5 ulist.add(new User("lihua",36,1,"长沙"));
 6 ulist.add(new User("zhangchangzhe",19,1,"衡阳"));
 7
 8 Collections.sort(list);
 9
10 for(User u:ulist){
11             System.out.println(u.getName()+"\t"+u.getAge()+"\t"+u.getAddress());
12 }
13
14  

==============================================

b.eg

--------------------------------

 1 public class User {
 2     private String name;
 3     private int age;
 4     private int gender;
 5     private String address;
 6
 7     public String getName() {
 8         return name;
 9     }
10
11     public void setName(String name) {
12         this.name = name;
13     }
14
15     public int getAge() {
16         return age;
17     }
18
19     public void setAge(int age) {
20         this.age = age;
21     }
22
23     public int getGender() {
24         return gender;
25     }
26
27     public void setGender(int gender) {
28         this.gender = gender;
29     }
30
31     public String getAddress() {
32         return address;
33     }
34
35     public void setAddress(String address) {
36         this.address = address;
37     }
38
39     public User() {
40         super();
41     }
42
43     public User(String name, int age, int gender, String address) {
44         super();
45         this.name = name;
46         this.age = age;
47         this.gender = gender;
48         this.address = address;
49     }
50
51 }
52
53  

------------------------------

 1 import java.util.Comparator;
 2
 3 public class ComparatorImpl implements Comparator<User>{
 4
 5     @Override
 6     public int compare(User o1, User o2) {
 7
 8         if(null!=o1 && null!=o2){
 9             if(o1.getAge() >o2.getAge()){
10                 return 1;
11             }else if(o1.getAge() ==o2.getAge()){
12                 return 0;
13             }
14         }
15         return -1;
16     }
17
18 }

-----------------------------------main

 1 List<User> ulist = new ArrayList<User>();
 2         ulist.add(new User("wangbo",29,1,"长沙"));
 3         ulist.add(new User("wumei",44,1,"株洲"));
 4         ulist.add(new User("zhangjie",19,1,"岳阳"));
 5         ulist.add(new User("lihua",36,1,"长沙"));
 6         ulist.add(new User("zhangchangzhe",19,1,"衡阳"));
 7         Collections.sort(ulist, new ComparatorImpl());
 8         for(User u:ulist){
 9             System.out.println(u.getName()+"\t"+u.getAge()+"\t"+u.getAddress());
10         }
时间: 2024-10-05 03:10:37

java集合中对象某属性比较排序Comparable与Comparator的相关文章

java按照集合中元素的属性进行排序示例代码

public class Student { private String name; private int age; private int id; public Student() {  super(); } public Student(String name, int age, int id) {  super();  this.name = name;  this.age = age;  this.id = id; } public String getName() {  retur

Java集合中对象排序

集合中的对象排序需求还是比较常见的,当然我们可以重写equals方法,循环比较:同时Java为我们提供了更易使用的APIs.当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. 下面通过两个例子分别用Comparable和Comparator实现对User对象中年龄排序. Comparable接口方式 类自身实现Comparable接口,实现该接口中的compareTo方法. import java.util.A

java 对list中对象按属性排序

实体对象类 --略 排序类----实现Comparator接口,重写compare方法 package com.tang.list; import java.util.Comparator; public class Mycompera implements Comparator<Student> { @Override    public int compare(Student o1, Student o2) {        if (o1.getSid() > o2.getSid()

JAVA实现根据对象的属性排序--BeanComparator,FixedOrderComparator,ComparatorChain

最近看到这样一段排序的代码. public static List<?> getBrandOrderList(List<?> list, String Field) { String[] brandArr = {"7天", "7天优品", "IU", "派", "麗枫", "喆啡", "希岸", "欢朋", "潮漫

【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更

java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; import java.lang.reflect.Field; import java.util.*; /** * @ClassName Test * @Description 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 * @Author sxd

java集合中List与set的区别

java集合中List与set的区别.     List可以存储元素为有序性并且元素可以相同.     set存储元素为无序性并且元素不可以相同.     下面贴几段代码感受一下: ArrayList list = new ArrayList();//构造出List对象 list.add(1); list.add("string"); list.add(true); list.add(3.14); list.add(null); for(int i = 0; i < size()

Java集合中的LinkedHashMap类

jdk1.8.0_144 本文阅读最好先了解HashMap底层,可前往<Java集合中的HashMap类>. LinkedHashMap由于它的插入有序特性,也是一种比较常用的Map集合.它继承了HashMap,很多方法都直接复用了父类HashMap的方法.本文将探讨LinkedHashMap的内部实现,以及它是如何保证插入元素是按插入顺序排序的. 在分析前可以先思考下,既然是按照插入顺序,并且以Linked-开头,就很有可能是链表实现.如果纯粹以链表实现,也不是不可以,LinkedHashM

39-oc集合中对象的内存管理

集合中对象的内存管理 集合的内存管理原则是什么 当把一个对象添加到集合中时,这个对象会做了一次retain操作,计数器会+1 当一个集合被销毁时,会对集合里面的所有对象做一次release操作,计数器会-1 当一个对象从集合中移除时,会对这个对象做一次release操作,计数器会-1 集合方法的普遍规律是什么 如果方法名是add\insert开头,那么被添加的对象,计数器会+1 如果方法名是remove\delete开头,那么被移除的对象,计数器-1

java spring中对properties属性文件加密及其解密

原创整理不易,转载请注明出处:java spring中对properties属性文件加密及其解密 代码下载地址:http://www.zuidaima.com/share/1781588957400064.htm 加密类: package com.zuidaima.commons.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import