Java基础—集合2Set接口和Map接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础—集合2Set接口和Map接口相关的知识,希望对你有一定的参考价值。

第一讲 Set

一 概述

Set:1. 元素存储无下标,所以元素是无序(存入和取出的顺序不一定一致

  2. 元素不可以重复

|--HashSet:底层数据结构是哈希表。线程不同步。 保证元素唯一性的原理:判断元素的hashCode值是否相同。如果相同,还会继续判断元素的equals方法,是否为true。

|--TreeSet:可以对Set集合中的元素进行排序。默认按照字母的自然排序。底层数据结构是二叉树。保证元素唯一性的依据:compareTo方法return 0。       

Set集合没有特有的功能,Set集合的功能和Collection是一致的

二 HashSet

HashSet:线程不安全,存取速度快。

HashSet的原理: HashSet中不能存入重复的值,如果add()存入重复值,返回false,那么HashSet如何保证数据是不是唯一的呢?

如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降低了使用equals()方法的次数

可以通过元素的两个方法,hashCode和equals来完成保证元素唯一性。如果元素的HashCode值相同,才会判断equals是否为true。如果元素的hashCode值不同,不会调用equals。

2. 知道了HashSet原理之后所以我们在存储自定义类的时候必须重写hashCode()和equals()方法

* hashCode(): 属性相同的对象返回值必须相同, 属性不同的返回值尽量不同(提高效率)

* equals(): 属性相同返回true, 属性不同返回false,返回false的时候存储 

 

以上是关于Java基础—集合2Set接口和Map接口的主要内容,如果未能解决你的问题,请参考以下文章

Java基础中map接口和实现类

大数据Java基础DAY21——集合完结(Map接口,HashMap,Linked Hash Map,TreeMap,Collections类)

Java基础题库2(勇敢牛牛冲冲冲!)

Java基础题库2(勇敢牛牛冲冲冲!)

java基础 Map集合

Java集合类根接口:Collection 和 Map