java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
2015-01-22 15:16
801 查看
/*TreeSet
* treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序
* 所以输出的数据是经过排序的数据
* 注:compareTo方法返回值有:负数,零,正数。分别表示小于,等于,大于
* 对于存入自定义的对象元素,要重写元素的compareTo(Object obj)方法
* 元素定义时,需要实现Comparable接口
* */
* treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序
* 所以输出的数据是经过排序的数据
* 注:compareTo方法返回值有:负数,零,正数。分别表示小于,等于,大于
* 对于存入自定义的对象元素,要重写元素的compareTo(Object obj)方法
* 元素定义时,需要实现Comparable接口
* */
import java.util.Iterator; import java.util.TreeSet; public class StudentCode { public static void main(String []args){ //定义TreeSet对象,并赋值java存在的对象 TreeSet ts1=new TreeSet(); ts1.add("java10"); ts1.add("java01"); ts1.add("java08"); ts1.add("java04"); //输出对象的值,是经过排序的数据 System.out.println(ts1); //定义TreeSet对象,并赋值自定义的对象 TreeSet ts2=new TreeSet(); ts2.add(new Person("ls",11)); ts2.add(new Person("zs",22)); ts2.add(new Person("ls",13)); ts2.add(new Person("ls",11)); //输出对象,也是经过排序的数据 for(Iterator it=ts2.iterator();it.hasNext();){ Person p=(Person)it.next(); System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge()); } } } //自定义数据,需要实现Comparable接口 class Person implements Comparable{ private String name; private int age; Person(String name,int age){ this.name=name; this.age=age; } public String getName(){ return this.name; } public int getAge(){ return this.age; } //重写compareTo()方法, public int compareTo(Object obj){ if(!(obj instanceof Person)) throw new RuntimeException("不是Person对象"); Person p =(Person)obj; if(this.age>p.getAge()){ return 1; } else if(this.age<p.getAge()){ return -1; }else{ return this.name.compareTo(p.getName()); } } }
/*TreeSet * treeSet当元素不具备比较性,或者比较性不是所需要的时候, * 可以使treeSet集合具有比较性。 * 定义比较器,并将比较器作为参数传给TreeSet集合 * 比较器需要实现Comparator接口 * 当元素具备比较性和比较器同时出现时,以比较器为准。 * */
import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; public class StudentCode { public static void main(String []args){ //定义TreeSet对象,并传入比较器 TreeSet ts2=new TreeSet(new MyCompareble()); ts2.add(new Person("ls",11)); ts2.add(new Person("zs",22)); ts2.add(new Person("ls",13)); ts2.add(new Person("ls",11)); //输出对象 for(Iterator it=ts2.iterator();it.hasNext();){ Person p=(Person)it.next(); System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge()); } } } //定义比较器 — — — — 以姓名为第一顺序,年龄为第二顺序 class MyCompareble implements Comparator{ //实现比较器里面的compare方法 public int compare(Object o1,Object o2){ Person p1=(Person)o1; Person p2=(Person)o2; int num=p1.getName().compareTo(p2.getName()); if(num==0){ return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge())); } return num; } } //自定义数据,需要实现Comparable接口 — — — — 以年龄为第一顺序,姓名为第二顺序 class Person implements Comparable{ private String name; private int age; Person(String name,int age){ this.name=name; this.age=age; } public String getName(){ return this.name; } public int getAge(){ return this.age; } //重写compareTo()方法, public int compareTo(Object obj){ if(!(obj instanceof Person)) throw new RuntimeException("不是Person对象"); Person p =(Person)obj; if(this.age>p.getAge()){ return 1; } else if(this.age<p.getAge()){ return -1; }else{ return this.name.compareTo(p.getName()); } } }
相关文章推荐
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
- 集合框架——Set(TreeSet实现Comparator方法排序)
- 集合框架_TreeSet的add()方法源码再次解读和TreeSet对元素排序的总结
- Java基础知识强化之集合框架笔记44:Set集合之TreeSet保证元素唯一性和自然排序的原理和图解
- Java基础 集合框架 共性方法 迭代器 ArrayList LinkedList Vector HashSet TreeSet
- java基础—自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序(java集合六)
- Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法
- Java基础知识强化之集合框架笔记45:Set集合之TreeSet存储自定义对象并遍历练习1(自然排序)
- Java://Comparator、Comparable的用法(按照要求将set集合的数据进行排序输出):
- TreeSet() 类逆向排序(实现compare()方法以便按正常顺序的逆向进行操作)。
- Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序)
- My_Java之笔记(8)- 实现TreeSet集合的排序方法
- 黑马程序员训练营---------TreeSet集合中对象进行排序的两种方式
- Java基础15:treeset;排序方法-比较器;泛型;
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR一、查询数据集合
- 黑马程序员------TreeSet集合框架存储自定义元素之排序Comparable与Comparator
- 使用自定义Comparator对TreeSet中的数据进行多条件排序
- TreeSet集合的add()方法源码解析(01.Integer自然排序)
- 浅谈对java中的hashset和Treeset 中重写equals()方法的不同及用法
- Java 数序和集合框架的转化 & Collection.sort()方法排序的两种方式