首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java高频面试题- 每日三连问?【Day11】 — 集合容器篇(三)

初始容量大小和每次扩充容量大小的不同 : ① 创建时如果不指定容量初始值,Hashtable 默认的初始大小 11,之后每次扩充,容量变为原来的 2n+1。HashMap 默认的初始化大小 16。...② 创建时如果给定了容量初始值,那么 Hashtable 会直接使用你给定的大小,而 HashMap 会将其扩充 2 的幂次方大小(HashMap 中的 tableSizeFor()方法保证,下面给出了源代码...但是如果发现有相同 hashcode 值的对象,这时会调用equals()方法来检查 hashcode 相等的对象是否真的相同。如果两者相同,HashSet 就不会让加入操作成功。...在 openjdk8 中,HashSet 的 add()方法只是简单的调用了 HashMap 的 put()方法,并且判断了一下返回值以确保是否有重复元素。...也就是说,在 openjdk8 中,实际上无论HashSet 中是否已经存在了某元素,HashSet 都会直接插入,只是会在 add()方法的返回值处告诉我们插入前是否存在相同元素。

30920

【Java核心面试宝典】Day15、“Java容器”高频面试题总结!✊✊✊

该方法的返回值类型是什么? Iterable接口的核心方法是iterator,该方法返回迭代器的实例,返回值类型是Iterator。 3、如何实现在遍历过程中删除元素?...10、Map中,能否重复?如果重复,会有什么现象? Map中不允许重复,因为每一个对应一个值,如果有重复的,则会出现一个对应多个值的情况,这违背了映射的定义。...HashMap 不是线程安全的,Hashtable 是线程安全的; HashMap 的效率高于 Hashtable; HashMap 允许或值 null,最多可以有一个 null,Hashtable...不允许或值 null; 从 JDK 1.8 开始,HashMap 的实现包括红黑树,Hashtable 则没有这样的机制。...12、从JDK1.8之后,HashMap的实现有什么变化? JDK 1.8 之前的 HashMap 的底层通过数组和链表实现,如果出现冲突则通过拉链法解决冲突。

31440

Java集合常见面试题汇总

覆盖 equals方法 ① 必须保证内容相同返回 true,拒绝添加元素 ② 内容不同的对象返回值false,则成功添加 II....true,代表 内容相同对象,则拒绝添加到集合中,如果返回值false,则成功添 加到对应下标位置,此时采用数组+链表形式进行存储。...简述 HashMap的存储原理 HashMap: 存储元素时获取key的哈希码值(通过对应对象的hashCode方法), 获取哈希码值与底层存储时数组取余得到存储下标,第一种情况存储 下标上没有元素...,则直接添加(将key和value一起存储);第二种情 况,存储下标位置上如果有元素,则调用key对应存储对象的equals 方法,判断下标冲突的对象内容是否相同,equals方法结果true,...代表内容相同,则拒绝添加,equals方法结果false,代表内容不 同,此时采用数组+链表形式进行存储 HashMap应用注意细节: 如果自定类型的对象作为HashMap进行存储,为了 保证元素内容不重复

7810

(40) 剖析HashMap 计算机程序的思维逻辑

查看Map的大小 int size(); boolean isEmpty(); 查看是否包含某个 boolean containsKey(Object key); 查看是否包含某个值 boolean...找到了保存位置i,table[i]指向一个单向链表,接下来,就是在这个链表中逐个查找是否已经有这个了,遍历代码: for (Entry e = table[i]; e !...= null && key.equals(k)))) 查看是否包含某个 containsKey的逻辑与get是类似的,节点不为null就表示存在,具体代码: public boolean containsKey...= null; } 查看是否包含某个值 HashMap可以方便高效的按照进行操作,但如果要根据值进行操作,则需要遍历,containsValue方法的代码: public boolean containsValue...存取的时候依据的hash值,只在对应的链表中操作,不会访问别的链表,在对应链表操作时也是先比较hash值,相同的话才用equals方法比较,这就要求,相同的对象其hashCode()返回值必须相同,如果是自定义的类

76480

Java Collections Framework - Java集合框架之概要

Map 接口提供三种collection 视图,允许以键集、值集合或-值映射关系集的形式查看某个映射的内容。映射的顺序 定义迭代器在映射的 collection 视图中返回其元素的顺序。...此实现提供所有可选的映射操作,并允许使用 null 值和 null 。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)...这时,你必须判断该元素是否已经存在于该哈希表中。  如果哈希码是合理地随机分布的,并且哈希表元的数量足够大,那么哈希冲突的数量就会减少。...一个0返回值只是表示两个对象排在同一位置。由Comparator用户决定如何处理。如果两个不相等的元素比较的结果,您首先应该确信那就是您要的结果,然后记录行为。” ...(2)boolean equals(Object obj): 指示对象obj是否和比较器相等。

71230

第四阶段-Java集合框架:【第五章 Map接口】

(key):就是你存的值的编号 值 (value):就是你要存放的数据 你可以近似的将理解下标,值依据而存储,每个都有其对应值。...(Object value) //判断集合是否空 boolean isEmpty() D:获取功能 //将map集合中的和值映射关系打包一个对象 Set> entrySet...存储的是键值对形式的元素,唯一,值可重复 HashMap 底层数据结构是哈希表,线程不安全,效率高 哈希表依赖两个方法:hashCod()和equals() 执行顺序: 首先判断hashCode()值是否相同...根据比较的返回值是否是0来决定 如何保证两种元素的排序呢?...允许null和null值 (其实HashMap就是用来替代Hashtable的,就像ArrayList替代vector一样) 2:List,Set,Map等接口是否都继承子Map接口?

63330

Map集合实例练习一

Map概念 Map集合的特点,如是否可重复,是否有序仅作用在上,如HashMap集合的不得重复,值可以重复。...Collection中的集合,元素是孤立存在的(理解单身),向集合中存储元素采用一个个元素的方式存储。 Map中的集合,元素是成对存在的(理解夫妻)。...Map key – 此映射所维护的的类型 value – 映射值的类型 put方法:将指定的与值对应起来,并添加到集合中 方法返回值所对应的值...使用put方法时,若指定的(key)在集合中没有,则没有这个对应的值,返回null,并把指定的键值添加到集合中; 使用put方法时,若指定的(key)在集合中存在,则返回值集合中键对应的值...(该值替换前的值),并把指定所对应的值,替换成指定的新值。

39710

BAT大厂面试官必问的HashMap相关面试题及部分源码分析

,而不再判断当前put进来的元素对应的数组下标位置是否有值 JDK7中是先扩容再添加新元素,JDK8中是先添加新元素然后再扩容 图 1 HashMap中的散列桶数组存储示意图 2 HashMap...boolean evict) { Node[] tab; Node p; int n, i; //先判断table是否空或者长度...(k)方法的返回值赋给kc后的值也null //或者调用compareComparables(kc, k, pk)方法后的返回值赋值给dir后等于0 else if (...Node xpn = xp.next; //定义x节点调用map.newTreeNode(h, k, v, xpn)方法后的返回值 TreeNode...的 get 方法流程 当我们调用get()方法,HashMap会使用对象的hashcode找到bucket位置,找到bucket位置之后,会调用keys.equals()方法去找到链表中正确的节点,

24340

Collections工具类与map集合

性能对比代码示例(时间单位毫秒): ? 运行结果: ?...Map集合: Map集合是一个双列集合,也叫键值对集合,是java.util.Map接口,是以一一值结构的集合。...Map集合必须拿着来操作值,Map接口下有HashMap和Hashtable两个集合类。前者是非线程安全的,键值可以写null,后者是带有线程安全的,键值不可以写null。...keySet方法用于拿出集合里所有的,因为返回值是Set集合类型所以需要先存放在Set集合里,然后遍历集合将拿出来,使用的是Hashtable则是带有排序的,使用HashMap则没有排序: ?...values方法用于拿出集合里所有的值,需要先存放在Collection集合里,然后遍历集合将拿出来,使用的是Hashtable则是带有排序的,使用HashMap则没有排序: ?

45210

【Java百炼成神】双生武魂——HashMap、LinkedHashMap、Hashtable

【重要】 ArrayList的contains判断是否包含某个元素 HashSet 的 add 判断是否重复  HashMap 的 put 判断是否重复  写在最后 集合概述 集合:用来保存 相同类型数据...get(Object key) 通过指定 key 获得值 value  若获取不到,返回 null remove(Object key) 移除指定 key 对应的键值,并返回值。...clear() 清空集合 size() 集合中键值的个数 isEmpty() 集合是否HashMap遍历 方法名 描述 keySet() 以 Set 集合的方式获得所有 key entrySet...​ HashSet 的 add 判断是否重复   HashSet 不能存储重复元素: ​ 如果集合中是自定义类型,则必须自定义类型重写 hashCode()和 equals()方法,HashSet...HashMap 的 put 判断是否重复 我们知道,HashMap 中,put 重复的,会使用新 value 替换旧 value。

61640

Java(集合④)

前提条件: 当方法的参数列表数据类型已经确定,但是参数个数不确定,就可以使用可变参数; 格式: 修饰符 返回值类型 方法名(数据类型...变量名){} 代码: public static void...sum(int...a){//可变参数} 注意:可变参数可传-多个; 可变参数的原理: 可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来储存这些参数; 注意事项: 1...: ①V put(K key, V value):将指定的值与此映射中的指定关联(添加元素) Map map=new HashMap();//创建集合 map.put...);//删除Key值"小强"的元素 ③V get(Object key):返回指定所映射的值;如果此映射不包含该的映射关系,则返回 null(获取参数Key对应的Value值) Map<String...("小强",18);//存放进集合 map.containsKey("小强");//查询Key值小强的元素,返回true HashMap集合的遍历: 第一种遍历: Set keySet():返回此映射中包含的

69520
领券