TestTreeSet

/*TreeSet:底层使用的数据结构是二叉树,线程不安全的
 * 可以对存入的集合的对象进行排序
 * 排序方法一:集合中对象所属的类Compareable接口中的int compareTo()方法
 * TreeSet依据该方法进行排序
保证对象唯一的方式:compareTo()方法的返回值是0,就不加入进去了
案例①
*/
package com.jh;
import java.util.*;
public class TestTreeSet {
public static void main(String[] args) {
TreeSet ts=new TreeSet();
//在使用add方法添加对象时会计入集合的对象进行排序
//String类实现了Comparable接口中的int compareTo方法
ts.add("xyt");
ts.add("mal");//"mal".compareTo("xyz");mal和xyz比较大小
ts.add("abdced");
ts.add("mal");//重复也不对添加进去,
sop(ts);//[abdced, mal, xyt]


}
public static void sop(Object obj)
{
System.out.println(obj);
}

}



//

/*案例①:对象使用TreeSet排序,使用二叉数,会减少比较
 * */
package com.jh;
import java.util.*;
class Studentts implements Comparable //要写继承这个接口才可以比较
{
private String name;
private int age;
public Studentts(){}
public Studentts(String name,int age)
{
this.name=name;
this.age=age;
}
public int  compareTo(Object obj) //继承了接口Comparable,需要重写这个歌方法
{
// 输出效果1:
return 1;//如果直接返回,就是按照之前添加的顺序是什么,就返回什么,
/*// 输出效果1
yoti,21
mingming,26
zhangsna,24*/
 


// 输出效果2:会按对象大小排序
/* if(!(obj instanceof Studentts))
{
throw new ClassCastException("类型转换异常");
}
Studentts stu=(Studentts)obj; 
int num=this.age-stu.age;
return num==0?this.name.compareTo(stu.name):num;//如果年龄相同并且名称相同返回0 
输出效果2:
yoti,21
zhangsna,24
mingming,26*/


/* return -1;//会将原来添加对象的时候的顺序再倒着输出
输出效果1
zhangsna,24
mingming,26
yoti,21*/


}
public String toString()
{
return name+","+age;
}
}
public class TestTreeSet2 {
public static void main(String[] args) {
TreeSet ts=new TreeSet();
ts.add(new Studentts("yoti",21));
ts.add(new Studentts("mingming",26));
ts.add(new Studentts("zhangsna",24));
// sop(ts);
 
//迭代器
Iterator ite=ts.iterator();
while (ite.hasNext())
{
Object obj=ite.next();
sop(obj);
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值