集合-Set

Set集合

(1)定义:Set集合的特点
	     		--无序,唯一

(2)属性:3点HashSet集合-2点TreeSet集合

  1)HashSet集合(掌握)
	1-底层数据结构是哈希表(是一个元素为链表的数组)
	2-哈希表底层依赖两个方法:hashCode()和equals()
	  执行顺序:
		首先比较哈希值是否相同
			相同:继续执行equals()方法
				返回true:元素重复了,不添加
				返回false:直接把元素添加到集合
			不同:就直接把元素添加到集合
			
			@@String类重写hashCode()和equals(),所以可以把内容相同的字符串去掉
			  如果没有重写这两种方法,默认继承Object类的,一般不相同
	  
	3-如何保证元素唯一性的呢?
		由hashCode()和equals()保证的
		
	4-Java对于eqauls方法和hashCode方法是这样规定:
	    1.如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;
		2.如果两个对象的hashCode相同,它们并不一定相同。
		
		首先equals方法必须满足:
			自反性(x.equals(x)必须返回true)
			对称性(x.equals(y)返回true时,y.equals(x)也必须返回true)
			传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)
			一致性(当x和y引用的对象信息没有被修改时,多次调用x.equals(y)应该得到同样的返回值)
			而且对于任何非null值的引用x,x.equals(null)必须返回false。

  2)TreeSet集合--唯一/排序
  		--TreeSet集合是Set集合的一个子实现类,它是基于TreeMap中的NavigableSet接口实现的
	1-底层数据结构是红黑树(是一个自平衡的二叉树)
		唯一性:是根据比较的结果是否是0来决定
		
	2-保证元素的排序方式
		1.自然排序(元素具备比较性)
			让元素所属的类实现Comparable接口
		2.比较器排序(集合具备比较性)
			让集合构造方法接收Comparator的实现类对象
	    @如果同时有自然排序和比较器排序,以比较器排序为主
	    TreeSet集合的无参构造就是属于自然排序
		 添加到TreeSet中的数据类型必须是相同的

(3)注意:

    虽然set集合元素无序,但作为集合它有自己的存储顺序            
    真正的比较是依赖于compareTo()方法;这个方法定义在Comparator接口中 
	二叉树:
    元素的取出顺序(前序遍历,中序遍历,后续遍历)
    从根节点开始,按照左,中,右的原则依次取出元素		

(4)例外:LinkedHashSet:底层数据结构是哈希表和链表组成;

         哈希表保证元素的唯一性;
         链表保证元素的有序性	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值