• 关于comparable与comparator的用法(即自定义集合框架用法 )


      1 package javastudy;
      2 
      3 import java.util.Comparator;
      4 import java.util.Iterator;
      5 import java.util.TreeSet;
      6 public class Ptext {
      7 
      8     public static void main(String[] args) {
      9         // TODO Auto-generated method stub
     10         //关于comparable的用法:以Person为例进行排序:
     11         /**用法声明
     12          * 1。建立一个Person类,并定义name,age
     13          * 2.建立Person的构造函数
     14          * 3.建立Person集合框架,并在数组中赋值,遍历打印输出。
     15          * 4.运行,会报错,原因是两个不能比较,所以在此要建立比较方法
     16          * 5.在Person中继承comparable,并重写方法。
     17          * 6.根据api中内容,定义比较值还回-1,1,0.
     18          * 7.运行
     19          * */
     20         TreeSet<Person> ts = new TreeSet<Person>();
     21         ts.add(new Person("Mark",12));
     22         ts.add(new Person("Keven",16));
     23         ts.add(new Person("Bob",20));
     24         ts.add(new Person("Jine",19));
     25         for(Iterator<Person> it=ts.iterator();it.hasNext();)
     26         {
     27             Person p = it.next();
     28             p.show();
     29             System.out.println(it.next());
     30         }
     31         //自己建立一个比较器,即comparator的用法,以Dog为例进行;
     32         /**
     33          * 1.与person类似,建立Dog类,并定义name,weight;
     34          * 2.建立构造方法;
     35          * 3.打印输出或者建立toString方法(原因,如果不建立打印输出方法,在主函数中遍历是会出现javastudy.Person@4aa298b7这种类型)
     36          * 4。在主函数中建立自定义Dog的集合数组,
     37          * 5.建立一个自定义比较器,MyCom并集成Comparator
     38          * 6.定义比较方法
     39          * 7.运行。
     40          * */
     41         TreeSet<Dog> ds = new TreeSet<Dog>(new MyCom());
     42         ds.add(new Dog("Mark",12));
     43         ds.add(new Dog("Keven",16));
     44         ds.add(new Dog("Bob",20));
     45         ds.add(new Dog("Jine",19));
     46         for(Iterator<Dog> it=ds.iterator();it.hasNext();)
     47         {
     48             System.out.println(it.next());
     49         }
     50     }
     51 
     52 }
     53 
     54 class Person implements Comparable<Person> {
     55     String name;
     56     int age;
     57     Person(String name,int age)
     58     {
     59         this.name=name;
     60         this.age=age;
     61     }
     62     void show(){
     63         System.out.println(String.format("姓名=%s,年龄=%d", name,age));
     64     }
     65     
     66     public int compareTo(Person o) {
     67         // TODO Auto-generated method stub
     68         if(this.age < o.age)
     69         {
     70             return 1;
     71         }
     72         else if(this.age>o.age)
     73         {
     74             return -1;
     75         }
     76         else
     77         {
     78         return 0;
     79         }
     80     }
     81 }
     82 //关于comparator的用法,即DOG例子说明;
     83 
     84 class MyCom implements Comparator<Dog>
     85 {
     86 
     87     @Override
     88     public int compare(Dog arg0, Dog arg1) {
     89         // TODO Auto-generated method stub
     90         //这里与return 1 ,-1,0.的用法一样,这是简写。
     91         //注:因为建立的自定义比较Dog1,与dog2,所以这里两种方法都可以使用。而第一种只是利用comparable不行。
     92         return arg0.name.compareTo(arg1.name);
     93     }
     94     
     95 }
     96 class Dog
     97 {
     98     String name;
     99     int weight;
    100     Dog(String name,int weight)
    101     {
    102         this.name=name;
    103         this.weight=weight;
    104     }
    105     @Override
    106     public String toString() {
    107         return "Dog [name=" + name + ", weight=" + weight + "]";
    108     }
    109 }
  • 相关阅读:
    04前端基础平台搭建宣导材料
    「收藏」全国12.5m 地形DEM&0.3米分辨率谷歌卫星地图免费下载
    【产业经济电子沙盘】辖区产业发展和规划如何汇报才能出彩?
    数字高程模型 | DEM采集的主要方式
    漫画 快捷键 下一话 多css路进匹配
    Python 轻量级 Web 应用框架 Flask Demo搭建 Better
    手写代码,实现Vue2响应式 Better
    Canvas 折线图组件封装 Better
    Vue 父子组件生命周期顺序梳理 Better
    Vue Router 导航守卫总结 Better
  • 原文地址:https://www.cnblogs.com/xiadongqing/p/5079765.html
Copyright © 2020-2023  润新知