首页 > 其他分享 >Map与List

Map与List

时间:2022-09-25 22:57:48浏览次数:55  
标签:Map HashMap List jdk1.7 链表 安全 线程 数组

一、Map

  • HashMap

    • 在jdk1.7与1.8中的区别?
jdk1.7:
    数组+链表
jdk1.8:
    数组+链表/红黑树
    • 线程不安全的原因?
jdk1.7:
    环形链表(扩容时的transfer方法:头插法 -> 死循环);
    数据丢失;
jdk1.8:
    数据覆盖;
    • 数组每次扩容2倍(保持数组容量为2^n)的原因?
减少hash碰撞:(n - 1)& hash
  • ConcurrentHashMap

    • 在jdk1.7与1.8中的区别?
jdk1.7:
    实现:数组 + Segment
    安全:分段锁(最多16个Segment)
    注:Segment继承ReentrantLock,类似HashMap
jdk1.8:
    实现:数组 + 链表 / 红黑树
    安全:synchronized + cas,对每个数组元素(即链表 / 红黑树)加锁
    优势:获得jvm支持;减少内存开销(获得锁、加锁、释放锁)

二、List

  • ArrayList与LinkedList区别?

  ArrayList LinkedList
数据结构 数组 链表
效率 适合查询 适合增、删
内存

三、并发下的问题

  说明
ArrayList、HashMap

效率高、线程不安全;

可通过Collections.synchronizedList(list);Collections.synchronizedMap(map);保证线程安全

 Vector、Hashtable

效率低、线程安全;

本质上是通过synchronized保证线程安全的; 

 CopyOnWriteArrayList、ConcurrentHashMap

 效率高、线程安全;

标签:Map,HashMap,List,jdk1.7,链表,安全,线程,数组
From: https://www.cnblogs.com/dork-h/p/16729287.html

相关文章

  • [Oracle] LeetCode 1636 Sort Array by Increasing Frequency 双map
    Givenanarrayofintegersnums,sortthearrayinincreasingorderbasedonthefrequencyofthevalues.Ifmultiplevalueshavethesamefrequency,sortthem......
  • .net6 使用 AutoMapper
    引用AutoMapper.Extensions.Microsoft.Dependencylnjection包组织映射配置的一个好方法是使用配置文件。创建继承自Profile并将配置放入构造函数的类publicclassR......
  • lambda函数和map函数的理解和使用
    lambda函数在说lambda函数前,先来想一下平时的在Python中怎么定义和使用函数的,简单的如下:defsum(x):x=x+5returnxprint(sum(8))输出结果都晓得:13上......
  • 代码阅读题-subList()
    publicstaticvoidmain(String[]args){List<String>allElements=List.of("a","b","c","d","e","f");List<String>allList=newArrayList......
  • HashMap源码分析
    主要过一遍HashMap中的常量、构造方法、put方法当我们调用put时,实际上就是调用putValpublicVput(Kkey,Vvalue){returnputVal(hash(key),key,value,false,......
  • 011——常用API(String , ArrayList)
    常用API(String,ArrayList)API(ApplicationProgrammingInterface,应用程序编程接口)Java写好的程序(功能),咱们可以直接调用。Oracle也为Java提供的这些功能代码......
  • 自定义映射resultMap
    1、resultMap处理字段和属性的映射关系若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射<!--resultMap:设置自定义映射属性:id:表示自定义映射的唯......
  • 集合ArrayList类
    什么是集合集合是长度可变的容器集合与数组的对比集合长度可变,自动伸缩,可长可短集合只能存引用数据类型,非要存基本数据类型,就要将其变成包装类ArrayListArrayList......
  • resultType-resultMap注意点
    注意:1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系resultType:自动映射,用于属性名和表中字段名一致的情况......
  • 从基础到实践,一文带你看懂HashMap
    HashMap是面试中经常问到的一个知识点,也是判断一个候选人基础是否扎实的标准之一,因为通过HashMap可以引出很多知识点,比如数据结构(数组、链表、红黑树)、equals和hashcode......