JAVA学习笔记-Set(HashSet 、TreeSet)

Set:不包含重复元素
  实现类 
 
  HashSet:
  底层用哈希表实现
  不保证Set的迭代顺序:特别是不保证顺序的恒久不变,此类允许使用null
  不能放重复值
 

Treeset:
底层用二叉树算法实现
可排序 
不能放重复值
自定义的类想排序,令该类implements Comparable
重写public int compareTo(Object o),在这个方法内写比较方法
该比较规则只有一种,实现多种比较规则应自定义比较器

自定义比较器:
1. 写一个MyCompare类
在其中重写compare方法

2. 在new TreeSet对象时上面写的比较器类对象当构造方法参数传递进去

// Set set = new TreeSet(new Mycompare())

private static void t2() {
Set set = new TreeSet();
set.add(3);
set.add(0);
set.add(2);
set.add(1);
System.out.println(set);


}

private static void t1() {
Set set = new HashSet();
set.add("a");
set.add("b");
set.add("c");
System.out.println(set);

}



                自定义比较器:

                public  class MyCompare implements Comparator{


@Override
public int compare(Object o1, Object o2) {
if(o1==o2)
return 0;
if(o1==null || o2==null)
return -1;
Person p1 = (Person)o1;
Person p2 = (Person)o2;

//按age比较
//return (new Integer(p1.getAge())).compareTo(p2.getAge());
//按name比
return p1.getName().compareTo(p2.getName());
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值