HashSet与HashMap的区别,你知道吗?

    • 摘要:HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个排序的功能. hashCode和equal()是HashMap用的,因为无需排序所以只需要关注定位和唯一性即可.  a.hashCode是用来计算hash值的,hash值是用来确定hash表索引的.  b.hash表
      1. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key
      2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个排序的功能.
      3. hashCode和equal()是HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可.
           a. hashCode是用来计算hash值的,hash值是用来确定hash表索引的.
           b. hash表中的一个索引处存放的是一张链表, 所以还要通过equal方法循环比较链上的每一个对象
               才可以真正定位到键值对应的Entry.
           c. put时,如果hash表中没定位到,就在链表前加一个Entry,如果定位到了,则更换Entry中的value,并返回旧value
      4. 由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.
           a. Comparator可以在创建TreeMap时指定
           b. 如果创建时没有确定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.
           c. TreeMap是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.

原文地址:https://www.cnblogs.com/aspirant/p/8901879.html

时间: 2024-11-09 03:10:23

HashSet与HashMap的区别,你知道吗?的相关文章

HashSet和HashMap的区别

HashSet和HashMap的区别.Java的HashSet类是由哈希表支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用 null 元素.HashSet类为基本操作提供了稳定性能,这些基本操作包括 add.remove.contains 和 size,假定哈希函数将这些元素正确地分布在桶中.. Java的HashMap和Hashtable都实现了Map接口.它们及其子类都采用Hash算法决定Map中key的存储. HashMap和Hashtable的主要区别有:线

HashSet HashTable HashMap的区别 及其Java集合介绍

(1)HashSet是set的一个实现类,hashMap是Map的一个实现类,同时hashMap是hashTable的替代品(为什么后面会讲到). (2)HashSet以对象作为元素,而HashMap以(key-value)的一组对象作为元素,且HashSet拒绝接受重复的对象.HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set. 这里HashSet就是其实就是HashMap的一个视图. HashSet内部就是使用Hashmap实现的,和Hash

HashSet HashTable HashMap的区别

(1)HashSet是set的一个实现类,hashMap是Map的一个实现类,同时hashMap是hashTable的替代品(为什么后面会讲到). (2)HashSet以对象作为元素,而HashMap以(key-value)的一组对象作为元素,且HashSet拒绝接受重复的对象.HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set. 这里HashSet就是其实就是HashMap的一个视图. HashSet内部就是使用Hashmap实现的,和Hash

Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等

1.Set和Map的关系: Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个key-value对组成的集合. Set的集合继承体系: Map关系集合 Map集合的key特征:所有key不能重复,key之间没有顺序.Map集合的所有key将具有set集合的特征. 对Set做改造可将Set改造成Map集合: 2.HashSet和HashMap的区别和联系:    对于HashSet,系统采用Hash算法决定集合元素的存储位置:对于HashMap,系统将value当成key的附属物,系

HashMap与HashTable、HashSet与HashMap异同

1. HashMap与HashTable的区别: (1)HashMap允许将null作为一个entry的key或者value,而Hashtable不允许.当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null.因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断. (2)HashMap把Hashtable的contains方法去掉了,改成containsvalue和cont

Hashtable,hashset,hashmap的原理和区别

hashtable和hashset的区别: 这两个从不同的接口继承下来的,两者完全不一样,前者数据以<key,value>的形式储存,后者是存储单个对象的. hashtable和hashmap的区别: 1:hashtable是基于陈旧的类继承下来的(Dictionary),hashmap是java引进的map接口的一个实现: 2:hashtable是同步的,而hashmap不是同步的(异步就是一个对象可以同时给多个线程访问,同步就是一个对象只能给一个线程访问,其他线程都得排队等着),hashm

java集合List、Set、Map总结 + HashMap/Hashtable区别

List:(有序,可以重复)通过下标索引 ----ArrayList  可变数组,随机查找 ----LinkedList    链表,任何位置插入删除快 ----Vector    效率比arraylist低,但是可以用于多线程同步 Set:(无序,不可以重复)set最多有一个null元素,因为不可以重复 ----HashSet    没有排序,不重复(顺序随机) ----LinkedHashSet    按插入排序,不重复(按插入顺序) ----TreeSet    实现Comparable接

Java集合 -- HashSet 和 HashMap

HashSet 集合 HashMap 集合 HashSet集合 1.1 Set 接口的特点 Set体系的集合: A:存入集合的顺序和取出集合的顺序不一致 B:没有索引 C:存入集合的元素没有重复 1.2 HashSet 使用&唯一性原理 1.2.1 HashSet的使用 1.2.1.1 案例代码一: public class HashSetDemo2 { public static void main(String[] args) { //创建集合对象 HashSet<Student>

安卓 ArrayList,LinkedList,HashSet,Vector,TreeSet的区别和使用

java的集合就那么几种 总体为:List,Set,Map (都是接口由其子类去实现具体的方法) ArrayList,LinkedList,Vector都属于List List:元素是有顺序的,元素可以重复因为每个元素有自己的角标(索引)  |-- ArrayList:底层的数据结构是数组结构,特点是:查询很快,增 删 稍微慢点,线程不同步 |-- LinkedList:底层使用的是链表数据结构,特点是:增 删很快,查询慢. |--Vector:底层是数组数据结构,线程同步,被ArrayList