容器
文章平均质量分 78
J.King
这个作者很懒,什么都没留下…
展开
-
Java集合- HashMap 的7种遍历方式
HashMap 遍历从大的方向来说,可分为以下 4 类:迭代器(Iterator)方式遍历;For Each 方式遍历;Lambda 表达式遍历(JDK 1.8+);Streams API 遍历(JDK 1.8+)。但每种类型下又有不同的实现方式,因此具体的遍历方式又可以分为以下 7 种:使用迭代器(Iterator)EntrySet 的方式进行遍历;使用迭代器(Iterator)KeySet 的方式进行遍历;使用 For Each EntrySet 的方式进行遍历;原创 2022-03-13 23:21:35 · 1776 阅读 · 0 评论 -
Java集合- HashMap 的底层数据结构实现原理
一、HashMap 的数据结构JDK1.8 之前JDK1.8 之前 HashMap 底层是 数组和链表 结合在一起使用也就是 链表散列。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - 1) & hash 判断当前元素存放的位置(这里的 n 指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,如果相同的话,直接覆盖,不相同就通过拉链法解决冲突。所谓扰动函数指的就是 Has原创 2022-03-13 05:46:15 · 2428 阅读 · 0 评论 -
Java集合- HashMap 和 TreeMap 的区别
在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平时说的键值对。HashMap通过hashcode对其内容进行快速查找(哈希表通过把关键码值映射到表中一个位置来访问记录,不需比较便可直接取得所查记录,加快了查找的速度)。而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。一、数据结构HashM原创 2022-03-11 21:43:24 · 5422 阅读 · 0 评论 -
Java集合- HashMap 和 HashSet 的区别
一、什么是 HashMapHashMap 实现了Map接口,Map接口对键值对进行映射HashMap 采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改HashMap 是非synchronized,但 collection 框架提供方法能保证 HashMap synchronized,这样多个线程同时访问HashMap时,能保证只有一个线程更改Map。(如果你要保证线程安全的话推荐使用 ConcurrentHashMap )HashMap 可以接受null键和值原创 2022-03-10 21:57:14 · 1112 阅读 · 0 评论 -
Java集合-HashMap 和 Hashtable 的区别
1、线程是否安全:HashMap 是非线程安全的,Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!);2、效率:因为线程安全的问题,HashMap 要比 Hashtable 效率高一点。另外,Hashtable 基本被淘汰,不要在代码中使用它;3、对 Null key 和 Null value 的支持:HashMap 可以存储 null 的 key 和 valu原创 2022-03-10 21:56:46 · 55 阅读 · 0 评论 -
Java集合-Queue、Deque接口和LinkedList、PriorityQueue实现类
一、Queue接口Queue 是单端队列,只能从一端插入元素,另一端删除元素,实现上一般遵循 先进先出(FIFO) 规则。Queue 实现通常不允许插入 null 元素。Queue的使用:1、添加元素,即插入队尾queue.offer(E e);或者queue.add(E e);2、弹出元素,即返回队首值并删除队首queue.poll()或者queue.remove()3、查询队首元素,不删除队首元素queue.peek();或者queue.element();*原创 2022-03-10 02:12:20 · 197 阅读 · 0 评论 -
Java集合-HashSet的使用及与LinkedHashSet、TreeSet的对比
一、HashSet 概述HashSet 实现了 Set 接口。HashSet 基于 HashMap 来实现,是一个不允许有重复元素的集合。HashSet 允许有 null 值。HashSet 是无序的,即不会记录插入的顺序。HashSet 不是线程安全的。二、HashSet 的使用2.1 创建import java.util.HashSet;HashSet<T> newSet = new HashSet<T>();2.2 添加元素set无重复元素的特性,转载 2022-03-03 14:35:44 · 684 阅读 · 0 评论 -
Java集合 Collection 子接口之 List 及与 Vector LinkedList的对比
一、ArrayList概述ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。ArrayList继承于 AbstractList ,实现了 List, RandomAccess, Cloneable, java.io.Serializable 这些接口。public class ArrayList<E> extends AbstractList<E> implements List<E>, Rando原创 2022-03-02 18:05:06 · 71 阅读 · 0 评论 -
集合常见面试题之集合概述
Java 集合概览Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接口:List、Set 和 Queue。Java 集合框架如下图所示:注:图中只列举了主要的继承派生关系,并没有列举所有关系。比方省略了AbstractList, NavigableSet等抽象类以及其他的一些辅助类,如想深入了解,可自行查看源码。说说 List, Set,原创 2022-02-21 23:28:27 · 72 阅读 · 0 评论