JavaSE 集合 Set

JavaSE 集合 Set

标签(空格分隔): JavaSE Set


Set

  • 散列表
  • 常见API
    继承collenction中的方法没有自己的方法
  • 迭代方式
    只能用迭代器方式迭代

HsahSet

  • 无序散列表根据hashcode进行排序

    插入时先进行hashcode判断如果不相同则直接插入
    当相同时者比较equals方法不相同加入

  • 需要重写hashcode和equals
    如果不重写hashcode
    比较地址的hashcodo不同直接添加
    如果不重写equals
    使用=进行判段
    而==是比较物理地址

    所以需要配合两个重写方法来实现

  • 内存泄漏-删除问题
    当一个对象被存储进HashSet集合中以后,就不能修改该对象的参与计算哈希值的属性值了,否则对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中删除当前对象,造成内存泄露。

在这里插入图片描述

TreeSet

  • 实现SortedSet接口

  • 要求可比较实现Comparable或者Comparator接口

  • 默认比较字典顺序
    实现Comparable接口 compareTo()进行排序和比较

  • 自定义排序实现comparator接口
    TreeSet(Comparator<? super E> comparator)

static <T extends Comparable<? super T>>  void sort(List<T> list)  排序 按字典排序
	实现 Comparable 接口 
	//主动调用 compareTo()
	public int compareTo(Object o){
		//this - o 升序    
		return ;
	}
static <T> void sort(List<T> list, Comparator<? super T> c)  创建Comparator对象
Collections.sort(list, new Coparator<People>(){	
	public int compare(People o1,People o2){
		return o1.getName().compareTo(o2.getName())
	}
})

推荐使用Comparator对象因为是自定义的比较所以能够修改,而Comparable是不能修改的不灵活

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值