搜索速度快,增删慢java
线程安全,效率低(synchronized锁)git
有序,可重复程序员
底层为双向链表面试
搜索速度慢,增删块算法
/** * 解决方案; * 一、List<String> list = new Vector<>(); * 二、List<String> list = Collections.synchronizedList(new ArrayList<>()); * 三、List<String> list = new CopyOnWriteArrayList<>(); * CopyOnWriteArrayList 使用的lock锁的机制 */
Set 注重独一无二的性质,该体系集合用于存储无序元素(存入和取出的顺序不必定相同),值不能重复。对象的相等性本质是对象 hashCode 值判断的,若是想要让两个不一样的对象视为相等的,就必须覆盖 Object 的 hashCode 方法和 equals 方法。设计模式
HashSet 存储元素的顺序是无序的,是按照哈希值来存的因此取数据也是按照哈希值取得。数组
HashSet 首先判断两个元素的哈希值,若是哈希值同样,接着会比较 equals 方法 若是 equls 结果为 true ,HashSet 就视为同一个元素。若是 equals 为 false 就不是 同一个元素安全
HashSet 经过 hashCode 值来肯定元素在内存中的位置。一个 hashCode 位置上能够存放多个元素markdown
HashSet 容许有 null 值。数据结构
HashSet 不是线程安全的
一个有序的集合,它的做用是提供有序的Set集合,支持add、remove、get等方法
比较此对象与指定对象的顺序。若是该对象小于、等于或大于指定对象,则分别返回负整 数、零或正整数
/** * 同理可证 : ConcurrentModificationException * //一、Set<String> set = Collections.synchronizedSet(new HashSet<>()); * //二、Set<String> set = new CopyOnWriteArraySet<>(); */
HashMap 最多只容许一条记录的键为 null,容许多条记 录的值为 null。
HashMap 非线程安全
全部访问HashTable的线程都必须竞争同一把锁
数据分红一段一段地存储,而后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其余段的数据也能被其余线程访问。
HashMap能够接受null键值和值,而Hashtable则不能; HashMap是非synchronized; HashMap很快;
以及HashMap储存的是键值对
看完美团、字节、腾讯这三家的一二三面试问题,是否是感受问的特别多,可能我们真的又得开启面试造火箭、工做拧螺丝的模式去准备下一次的面试了。
开篇有说起我但是足足背下了Java互联网工程师面试1000题,多少仍是有点用的呢,换汤不换药,无论面试官怎么问你,抓住本质便可!能读到此处的都是真爱,因此福利也为你准备,这份1000题免费送你!点击这里免费领取
并且从上面三家来看,算法与数据结构是必备不可少的呀,所以我建议你们能够去刷刷这本左程云大佬著做的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
以上所说起的所有Java面试学习的PDF及笔记,如若皆是你所须要的,那么均可发送给你!