`
清春不二
  • 浏览: 16028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java对集合进行排序的两种方法

    博客分类:
  • java
 
阅读更多
有两种方式可以进行集合排序 :
1. 为集合中对象的所属类实现了 java.lang.Comparable 接口

对需要排序的person类实现Comparable接口,实现接口的CompareTo方法来定义排序的规则
public class Person implements Comparable{
    private final int id;
    private String name;
    private int age;
   
    public Person(int id,String name,int age){
           this.id = id;
           this.name = name;
           this.age = age;
    }
    public int getId(){
           return id;
    }
    public void setName(String name){
           this.name = name;
    }
    public String getName(){
           return name;  
    }
    public void setAge(int age){
           this.age = age;
    }
    public int getAge(){
           return age;     
    }
    @Override
    public String toString(){
           return "Id: " + id + "/tName: " + name + "/tAge: " + age;
    }   
    @Override
    public int compareTo(Object o){      // 实现 Comparable 接口的抽象方法,定义排序规则
           Person p = (Person)o;
           return this.id - p.id;                      // 升序排列,反之降序
    }
    @Override
    public boolean equals(Object o){     //equals
           boolean flag = false;
           if(o instanceof Person){
                  if(this.id == ((Person)o).id)
                         flag = true;
           }
           return false;          
    }    
 
  
}

测试类
import java.util.TreeSet;
import java.util.Iterator;
 
public class TestComparable{
       public static void main(String[] args) {
              TreeSet ts = new TreeSet();
              ts.add(new Person(1003," 张三 ",15));
              ts.add(new Person(1008," 李四 ",25));
              ts.add(new Person(1015," 王五 ",73));
              ts.add(new Person(1001," 赵六 ",49));
 
              Iterator it = ts.iterator();
              while(it.hasNext()){
                     Person employee = (Person)it.next();
                     System.out.println(employee);     
              }
       }
}


2. 为集合指定比较器 java.lang.Comparator 的实现类
需要排序的类
//需要排序的类的对象
public class Person{
    private final int id;
    private String name;
    private int age;
   
    public Person(int id,String name,int age){
           this.id = id;
           this.name = name;
           this.age = age;
    }
    public int getId(){
           return id;
    }
    public void setName(String name){
           this.name = name;
    }
    public String getName(){
           return name; 
    }
    public void setAge(int age){
           this.age = age;
    }
    public int getAge(){
           return age; 
    }
    @Override
    public String toString(){
           return "Id: " + id + "/tName: " + name + "/tAge: " + age;
    } 
}
//创建person类的比较器
package ClassTest;

import java.util.Comparator;
public class PersonComparetor implements Comparator<Person>{

    public int compare(Person o1, Person o2) {
       
// return o1.getId()-o2.getId(); //升序
        return o2.getId()-o1.getId(); //降序
    }
}
//测试类
public class TestComparable {
    public static void main(String[] args) {
        List<Person> ts=new ArrayList<Person>();
        ts.add(new Person(1003," 张三 ",15));
        ts.add(new Person(1008," 李四 ",25));
        ts.add(new Person(1015," 王五 ",73));
        ts.add(new Person(1001," 赵六 ",49));
        PersonComparetor pc=new PersonComparetor();
        Collections.sort(ts, pc);
        for(Person p:ts){
            System.out.println(p);
        }
 }
}
分享到:
评论

相关推荐

    常用排序算法的java实现(冒泡、插入、选择、希尔、归并、快排)

    用java实现了以下算法: 1、冒泡排序、冒泡排序的两种改进。 2、插入排序。 3、选择排序。 4、希尔排序。 5、归并排序。 6、快速排序。

    Java sort集合排序的两种方式解析

    主要介绍了Java sort集合排序的两种方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java中的2种集合排序方法介绍

    主要介绍了Java中的2种集合排序方法介绍,本文直接给出代码,相关说明请看代码中的注释,需要的朋友可以参考下

    Java 八种排序算法比较实践

    Java 八种排序算法比较实践,实践出真知

    java排序代码

    TreeSet支持两种排序方式: 自然排序:TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列。 定制排序:在创建TreeSet集合对象时,并提供一个Comparator接口...

    用Java集合中的Collections.sort方法如何对list排序(两种方法)

    本文通过两种方法给大家介绍java集合中的Collections.sort方法对list排序,第一种方式是list中的对象实现Comparable接口,第二种方法是根据Collections.sort重载方法实现,对collections.sort方法感兴趣的朋友一起...

    JAVA四种基本排序方法实例总结

    所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法 一 插入法: 遍历排序集合,每到一个元素时,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该...

    海量数据去重排序bitmap(位图法)在java中实现的两种方法

    今天小编就为大家分享一篇关于海量数据去重排序bitmap(位图法)在java中实现的两种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    java集合三种比较器(详解)

    概述: 在java集合中,TreeSet集合和TreeMap集合底层数据结构都是自平衡二叉树,所以在这两个集合中添加元素的时候会实现自动排序,排序方式为中序排序(即左根右的方式进行排序,详情请见二叉树数据结构,这里不做...

    java中set、list和map的使用方法实例

    // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该对象的内部细节。 // 学习set对象容器的使用 // set容器中的对象不允许重复 // set容器接口的实现类有HashSet和 ...

    Java集合框架总结:TreeSet类的排序问题

    发布于2012-5-8TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。TreeSet会调用集合元素的compareTo(Objectobj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然...

    java常用工具类的使用

    就需要重载很多方法进行排序操作。而在Java类库中有一个Arrays类的sort方法已经实现各种数据类型的排序算法。程序员只需要调用该类的方法即可。 代码演示:Arrays实现排序 public static void main(String[] args) ...

    11集合.rarjava 集合类

    java 集合类的排序主要是用Collections.sort方法,Collections和Collection是不一样的,前者是类,后者是接口,在这里,我主要是想说明它的sort方法的几种类型, 提示:实现接口的方法时,只需要比较两个数,大的返回1,...

    java算法大全源码包.zip

    通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列...

    AIC的Java课程1-6章

     学习ArrayList与LinkedList类,理解封装数组和链表两种方式定义集合类。  可以使用迭代器Iterator遍历集合的元素。  [*]理解泛型概念,声明和使用带有范型的集合。 第11章 集合 4...

    JAVA面试题最全集

    35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    【Java】常用数据集合体系和特点(汇总)

    文章目录1. Collection体系集合1.1 List ...TreeSet 类(二叉树-自动排序)④ CopyOnWriteArraySet 类(线程安全且高效的Set)&gt;&gt; HashSet排序的两种方法1.3 Queue 队列① ConcurrentLinkedQueue 类(线程安全且高效的Q

    疯狂JAVA讲义

    学生提问:Java为什么要对这些数据进行缓存呢? 67 3.7.6 逻辑运算符 67 3.7.7 三目运算符 68 3.7.8 运算符的结合性和优先级 69 3.8 本章小结 70 本章练习 70 第4章 流程控制和数组 71 4.1 顺序结构 72 4.2 ...

    java开源包11

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

Global site tag (gtag.js) - Google Analytics