JAVA Comparable 排序接口

本文介绍如何在Java中使用TreeSet存储自定义对象,并通过实现Comparable接口进行排序。详细解析了AtterM类的定义,以及如何利用compareTo方法进行对象间的比较,最后展示了TreeSet的遍历过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码:

import java.util.Iterator;

import java.util.TreeSet;

 

public class TreeSetClass {

   public static void main(String[]arge){

      //实例TreeSet

      TreeSet treeSet= new TreeSet();

      //add添加自定义对象

      treeSet.add(new AtterM(20,"abc"));

      treeSet.add(new AtterM(30,"bbc"));

      treeSet.add(new AtterM(30,"bbc"));

      treeSet.add(new AtterM(21,"bbf"));

     

      Iterator iterator=treeSet.iterator();

      //用迭代器的方法hasNext() 判断是否有下一个值

      while(iterator.hasNext()){

         //指定类型 每次获取值next()都会刷新

         AtterM at=(AtterM)iterator.next();

         System.out.println(at.getage()+at.name);

      }

   }

}

//实现 Comparable 接口

class AtterM implements Comparable{

   int age;

   String name;

   //自定义方法添加对象

  public AtterM(int age,String name){

     this.age= age;

     this.name=name;

  }

public int getage(){

   return age;

}

public String getname(){

   return name;

}

@Override

public int compareTo(Object obj) {

  

   AtterM A=(AtterM)obj;

   //输出比较的对象

System.out.println(this.age+","+this.name+"....compareto....."+A.age+","+A.name);

   //判断比较对象是否this.age>A.age

   //大于返回正数

   if(this.age>A.age){

      return 1;

   }

   if(this.age==A.age){

      //判断名称是否相同相同返回

      //相同返回0并且在TreeSet不添加

       //能使用compareTo方法是Comparable继承String接口里的compareTo

   return this.name.compareTo(A.name);

   }

    //否则返回负数

   return -1;

}

}

结果:

说明:使用Comparable使每个元素都具有比较性,Comparable接口是在“内部”比较的。

需要修改源代码。

使用Comparable,比较方式比较繁琐是和集合里的每一个对象来比较大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值