武汉做网站建设的公司,武汉seo建站,wordpress图片放大插件,wordpress 快讯模板#x1f3a5; 个人主页#xff1a;Dikz12#x1f4d5;格言#xff1a;那些在暗处执拗生长的花#xff0c;终有一日会馥郁传香欢迎大家#x1f44d;点赞✍评论⭐收藏
目录 集合框架
模型
Set 常见方法和说明
Set总结
Map说明
Map常见方法和说明
Map 中HashMap的 … 个人主页Dikz12格言那些在暗处执拗生长的花终有一日会馥郁传香欢迎大家点赞✍评论⭐收藏
目录 集合框架
模型
Set 常见方法和说明
Set总结
Map说明
Map常见方法和说明
Map 中HashMap的 put() 过程
Map总结 集合框架 TreeSet 底层就是 TreeMap,底层结构也就是红黑树.
HashSet 底层就是 HashMap ,底层结构也就是哈希桶.
模型 一般把搜索的数据称为关键字Key和关键字对应的称为值Value将其称之为Key-value的键值对所以模型会有两种 1. 纯 key 模型比如
有一个英文词典快速查找一个单词是否在词典中快速查找某个名字在不在通讯录中
2. Key-Value 模型比如
统计文件中每个单词出现的次数统计结果是每个单词都有与其对应的次数单词单词出现的次数梁山好汉的江湖绰号每个好汉都有自己的江湖绰号
而Map中存储的就是key-value的键值对Set中只存储了Key
Set 常见方法和说明
方法解释boolean add(E e)添加元素但重复元素不会被添加成功void clear()清空集合boolean contains(Object o)判断 o 是否在集合中IteratorE iterator()返回迭代器boolean remove(Object o)删除集合中的 oint size()返回set中元素的个数boolean isEmpty()检测set是否为空空返回true否则返回falseObject[] toArray()将set中的元素转换为数组返回boolean containsAll(Collection? c)集合c中的元素是否在set中全部存在是返回true否则返回 falseboolean addAll(Collection? extends E c)将集合c中的元素添加到set中可以达到去重的效果
注意 1. Set是继承自Collection的一个接口类 2. Set中只存储了key并且要求key一定要唯一 3. TreeSet的底层是使用Map来实现的其使用key与Object的一个默认对象作为键值对插入到Map中的 4. Set最大的功能就是对集合中的元素进行去重 5. 实现Set接口的常用类有TreeSet和HashSet还有一个LinkedHashSetLinkedHashSet是在HashSet的基础上维护了一个双向链表来记录元素的插入次序。 6. Set中的Key不能修改如果要修改先将原来的删除掉然后再重新插入 7. TreeSet中不能插入null的keyHashSet可以
Set总结
Set底层结构TreeSetHashSet底层结构红黑树哈希桶插入/删除/查找时间 复杂度 O(log2N) O(1)是否有序关于Key有序不一定有序线程安全不安全不安全插入/删除/查找区别按照红黑树的特性来进行插入和删除1. 先计算key哈希地址 2. 然后进行插入和删除比较与覆写key必须能够比较否则会抛出ClassCastException异常自定义类型需要覆写equals和hashCode方法应用场景需要Key有序场景下Key是否有序不关心需要更高的时间性能
Map说明
Map是一个接口类该类没有继承自Collection该类中存储的是K,V结构的键值对并且K一定是唯一的不能重复.
Map.EntryK, V 是Map内部实现的用来存放key, value键值对映射关系的内部类该内部类中主要提供了key, value的获取value的设置以及Key的比较方式。
方法解释K getKey()返回 entry 中的 keyV getValue()返回 entry 中的 valueV setValue(V value)将键值对中的value替换为指定value
Map常见方法和说明
方法解释V get(Object key)返回 key 对应的 valueV getOrDefault(Object key, V defaultValue)返回 key 对应的 valuekey 不存在返回默认值V put(K key, V value)设置 key 对应的 valueV remove(Object key)删除 key 对应的映射关系SetK keySet()返回所有 key 的不重复集合CollectionV values()返回所有 value 的可重复集合SetMap.EntryK, V entrySet()返回所有的 key-value 映射关系boolean containsKey(Object key)判断是否包含 keyboolean containsValue(Object value)判断是否包含 value
Map 中HashMap的 put() 过程 开始执行putVal. 1.第一次put,数组为null会调用resize()进行内存分配默认大小是16.第二次就是2倍扩容进行重新哈希 2.获得一个数组的index当前下标没有元素直接放到数组里如果有元素进行尾插. 3.哈希表使用的是数组加链表的组合所以当节点个数 8 数组 64时就会变成红黑树 Map总结
Map底层结构TreeMapHashMap底层结构红黑树哈希桶插入/删除/查找时间 复杂度 O(log2N) O(1)是否有序关于Key有序不一定有序线程安全不安全不安全插入/删除/查找区别需要进行元素比较通过哈希函数计算哈希地址比较与覆写key必须能够比较否则会抛出ClassCastException异常自定义类型需要覆写equals和hashCode方法应用场景需要Key有序场景下Key是否有序不关心需要更高的时间性能
注意 1. Map是一个接口不能直接实例化对象如果要实例化对象只能实例化其实现类TreeMap或者HashMap 2. Map中存放键值对的Key是唯一的value是可以重复的 3. 在TreeMap中插入键值对时key不能为空否则就会抛NullPointerException异常value可以为空。但是HashMap的key和value都可以为空。 4. Map中的Key可以全部分离出来存储到Set中来进行访问(因为Key不能重复)。 5. Map中的value可以全部分离出来存储在Collection的任何一个子集合中(value可能有重复)。 6. Map中键值对的Key不能直接修改value可以修改如果要修改key只能先将该key删除掉然后再来进行重新插入.