zoukankan      html  css  js  c++  java
  • java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

    /*TreeSet
    * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序
    * 所以输出的数据是经过排序的数据
    * 注:compareTo方法返回值有:负数,零,正数。分别表示小于,等于,大于
    * 对于存入自定义的对象元素,要重写元素的compareTo(Object obj)方法
    * 元素定义时,需要实现Comparable接口
    * */

     1 import java.util.Iterator;
     2 import java.util.TreeSet;
     3 public class StudentCode {
     4     
     5     public static void main(String []args){
     6         //定义TreeSet对象,并赋值java存在的对象
     7         TreeSet ts1=new TreeSet();
     8         ts1.add("java10");
     9         ts1.add("java01");
    10         ts1.add("java08");
    11         ts1.add("java04");
    12         //输出对象的值,是经过排序的数据
    13         System.out.println(ts1);
    14         //定义TreeSet对象,并赋值自定义的对象
    15         TreeSet ts2=new TreeSet();
    16         ts2.add(new Person("ls",11));
    17         ts2.add(new Person("zs",22));
    18         ts2.add(new Person("ls",13));
    19         ts2.add(new Person("ls",11));
    20         //输出对象,也是经过排序的数据
    21         for(Iterator it=ts2.iterator();it.hasNext();){
    22             Person p=(Person)it.next();
    23             System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge());
    24         }
    25     }
    26 }
    27 //自定义数据,需要实现Comparable接口
    28 class Person implements Comparable{
    29     private String name;
    30     private int age;
    31     Person(String name,int age){
    32         this.name=name;
    33         this.age=age;
    34     }
    35     public String getName(){
    36         return this.name;
    37     }
    38     public int getAge(){
    39         return this.age;
    40     }
    41     //重写compareTo()方法,
    42     public int compareTo(Object obj){
    43         if(!(obj instanceof Person))
    44             throw new RuntimeException("不是Person对象");
    45         Person p =(Person)obj;
    46         if(this.age>p.getAge()){
    47             return 1;
    48         }
    49         else if(this.age<p.getAge()){
    50             return -1;
    51         }else{
    52             return this.name.compareTo(p.getName());
    53         }
    54     }
    55 }
     1 /*TreeSet
     2  *     treeSet当元素不具备比较性,或者比较性不是所需要的时候,
     3  *         可以使treeSet集合具有比较性。
     4  *         定义比较器,并将比较器作为参数传给TreeSet集合
     5  *         比较器需要实现Comparator接口
     6  *     当元素具备比较性和比较器同时出现时,以比较器为准。
     7  * */
     8 import java.util.Comparator;
     9 import java.util.Iterator;
    10 import java.util.TreeSet;
    11 public class StudentCode {
    12     
    13     public static void main(String []args){
    14         //定义TreeSet对象,并传入比较器
    15         TreeSet ts2=new TreeSet(new MyCompareble());
    16         ts2.add(new Person("ls",11));
    17         ts2.add(new Person("zs",22));
    18         ts2.add(new Person("ls",13));
    19         ts2.add(new Person("ls",11));
    20         //输出对象
    21         for(Iterator it=ts2.iterator();it.hasNext();){
    22             Person p=(Person)it.next();
    23             System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge());
    24         }
    25     }
    26 }
    27 //定义比较器 — — — — 以姓名为第一顺序,年龄为第二顺序
    28 class MyCompareble implements Comparator{
    29     //实现比较器里面的compare方法
    30     public int compare(Object o1,Object o2){
    31         Person p1=(Person)o1;
    32         Person p2=(Person)o2;
    33         int num=p1.getName().compareTo(p2.getName());
    34         if(num==0){
    35             return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));
    36         }
    37         return num;
    38     }
    39 }
    40 
    41 //自定义数据,需要实现Comparable接口 — — — — 以年龄为第一顺序,姓名为第二顺序
    42 class Person implements Comparable{
    43     private String name;
    44     private int age;
    45     Person(String name,int age){
    46         this.name=name;
    47         this.age=age;
    48     }
    49     public String getName(){
    50         return this.name;
    51     }
    52     public int getAge(){
    53         return this.age;
    54     }
    55     //重写compareTo()方法,
    56     public int compareTo(Object obj){
    57         if(!(obj instanceof Person))
    58             throw new RuntimeException("不是Person对象");
    59         Person p =(Person)obj;
    60         if(this.age>p.getAge()){
    61             return 1;
    62         }
    63         else if(this.age<p.getAge()){
    64             return -1;
    65         }else{
    66             return this.name.compareTo(p.getName());
    67         }
    68     }
    69 }
  • 相关阅读:
    javascript package
    javascript 的forEach函数
    JavaScript 缓存函数
    javascript String
    javascript的动态this与动态绑定
    CSS Position Fixed for IE6
    raphaeljs图形库学习笔记
    javascript wrapper函数
    javascript框架之继承机制3
    javascript 超级字符串对象
  • 原文地址:https://www.cnblogs.com/zxxiaoxia/p/4241763.html
Copyright © 2011-2022 走看看