set集合关系及特点

目录

      set集合的特点

      set集合的遍历方式

      HashSet哈希表储存,重复元素储存底层探究

      TreeSet(自然排序,比较器排序)

       


 set集合的特点

       延续上篇list集合,set集合与list集合为同级,在set集合中包括一个接口SortedSet和一个实现类HashSet。常用的实现类为HashSet与TreSet.

 set集合的特点与list集合正好相反

无序

不可重复

但set集合中的无序并不是绝对意义上的排序,而是以哈希表为基准的排序(下面有解释)。

set集合的遍历方式

            在list集合中有三种便利方式,而在set集合中只有两种遍历方式,正因为set集合为无序排序所以只能用fore遍历和iterator(迭代器)遍历。

for (Object object : set) {
			System.out.println(object);
		}
		
		System.out.println("---------");
		
		Iterator iterator=set.iterator();
		while (iterator.hasNext()) {
			Object next= iterator.next();
			System.out.println(next);
		}

HashSet哈希表储存,重复元素储存底层探究

     set集合去重原理:hashset底层数据结构是哈希表有限会调用hashset方法对比地址然后调用equals方法对比值

@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((sex == null) ? 0 : sex.hashCode());
		result = prime * result + ((sid == null) ? 0 : sid.hashCode());
		result = prime * result + ((sname == null) ? 0 : sname.hashCode());
		return result;
	}

    TreeSet(自然排序,比较器排序)

自然排序

      TreSet自然排序首先要实现

Serializable,Comparable<Student>

两个接口然后重写下面的方法;

	//比较重写
	@Override
	public int compareTo(Student o) {
		//比较的结果有 1.>0 2.<0 3.=0
		return this.getSname().hashCode()-o.getSname().hashCode();
	}

 

比较器排序

创建比较类,实现

Comparable<Student2>

public class NameComparator implements Comparator<Student2> {

	//String以Ascll码进行比较,返回差值
	@Override
	public int compare(Student2 arg0, Student2 arg1) {
		if(arg0.getSid()-arg1.getSid()>0) {
			return 100;
		}else if(arg0.getSid()-arg1.getSid()<0){
			return -100;
		}else {
			return 0;
			
		}
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值