首页 > 编程语言 >java集合相关问题

java集合相关问题

时间:2023-03-21 22:33:07浏览次数:41  
标签:java LinkedList ArrayList 元素 Vector 数组 集合 相关

  1. Hashmap原理分析

  2. ConcurrentHashMap相关问题

  3. HashMap和Hashtable和HashTree和ConcurrentMap的比较

    1. HashMap和Hashtable和HashTree和ConcurrentMap的区别

  4. Vector、ArrayList、 Linkedlist集合的区别

    1. ArrayList底层是采用数组实现的(数组类型是Object类型);jdk6采用Array.of()方法来生成一个新的数组,jdk5.0使用System.arraycopy方法(将数组拷贝)
    2.  List list = new ArrayList();底层会生成长度为10的数组来存放对象,如果预先知道list会存放多少个对象,最好通过new ArrayList(int length)指定定数组的最小长度,避免添加元素多次扩容提高底层的效率。
    3. 对于ArrayList与Vector,查找速度非常快,增加和删除操作非常慢。
    4. 对于ArrayList所有方法都不是同步的,对于Vector大部分方法是public的且都是同步的。
    5. LinkedList底层是由双向循环链表实现的,查找速度非常慢,增加和删除操作非常快。
    6. 同步性:ArrayList、LinkedList是不同步的,而Vestor是同步的。如果不要求线程安全的话,使用ArrayList或LinkedList,可以节省为同步而耗费开销。在多线程的情况下,有时不得不使用Vector。也可以通过一些办法包装ArrayList、LinkedList,使他们也达到同步,但效率可能会有所降低。
    7. 数据增长:从内部实现机制来讲ArrayList和Vector都使用Objec数组形式来存储。当向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度,它们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后获得的集合所占的空间总是比实际需要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因为可以通过设置集合的初始化大小来避免不必要的资源开销。
    8. 检索、插入、删除对象的效率:ArrayList和Vector中,从指定的index检索对象,或在集合的末尾插入、删除对象的时间是O(1)。但是,如果在集合的其他位置增加或移除元素花费的时间会呈线形增长:O(n-i),其中n代表集合中元素的个数,i代表元素增加或移除元素的索引位置。插入、删除的时集合中第i和第i个元素之后的所有元素都要执行位移操作。
      LinkedList中,在插入、删除集合中任何位置的元素所花费的时间都是一样的—O(1),但它在索引一个元素的时候比较慢,为O(i),其中i是索引的位置。所以,如果只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是对其它指定位置的插入、删除操作,最好选择LinkedList。
  5. ConcurrentHashMap为什么线程安全又高效
    1. https://blog.csdn.net/qq_44796583/article/details/102697873

      https://blog.csdn.net/qq_22343483/article/details/98510619

      https://mp.weixin.qq.com/s/exeWjwdXJ_9ota4lFO_W3Q

标签:java,LinkedList,ArrayList,元素,Vector,数组,集合,相关
From: https://www.cnblogs.com/xdlrf/p/17169986.html

相关文章

  • Java 循环嵌套
    使用说明所谓嵌套循环:是指一个循环结构A的循环体是另一个循环结构B。比如,for循环里面还有一个for循环,就是嵌套循环。其中,for,while,do-while均可以作为外层循环或内层循......
  • java.lang.IllegalArgumentException: lastRow firstRow lastCol firstCol
    出现这个错误,你应该使用的是easypoi导出功能@Excel(name="时间",orderNum="0")privateIntegerdt;因为你没有在实体类上面添加注解......
  • Java基础干货分享(一)
    ​Java中数据类型分为基本数据类型和引用数据类型,基本数据类型有8种:1、byte2、char3、short 4、int5、long6、float7、double8、boolean。8种基本类型的包装类对......
  • Map集合
    概念:一种可以自行定义检索规则的数据结构,也叫字典构成:key-value注意:null值可以作为keykey值具有唯一性HasMmap的Key其本质是数组+链表构成的红黑树点击查看代......
  • 爬虫相关 scrapy架构介绍、scrapy解析数据、settings相关配置,提高爬取效率、持久化方
    scrapy架构介绍#引擎(EGINE)引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。#调度器(SCHEDULER)用来接受引擎发过来的请求,压入队列中,并在......
  • java方法-方法重载
    方法的重载重载就是在一个类中,有相同的函数名称,但形参不同的函数。方法重载的规则:方法名称必须相同参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)......
  • List集合
    特点有序,有重复实现类1.ArrayList是一个基于数组的集合,其扩容策略为,默认为0,添加第一个元素直接扩展到10,此后每次扩容50%。常用API点击查看代码importjava.util.Ar......
  • Python相关练习
    我又来练习啦!1、将一个列表的内容复制到另外一个列表里面2、输出九九乘法表3、统计1到100的和4、转战PTA作业(函数篇)--使用函数输出指定范围内Fibonacci数的个数......
  • java中的泛型
    1、什么是泛型概念:概念:生活中的泛型是一种统一的模式,而程序中的泛型是用以统一数据类型的语法标准泛型接口和泛型类基本语法:一对尖括号当中,大写的单个字母,中间用逗号分......
  • java9 和代码相关的主要新特性
    1.增加了jshell的命令行客户端(相比较其他的稍微有点用处)2.多版本兼容jar(一个项目可以打出来适用于不同jdk版本的jar包)3.集合工厂方法(超有用)--之前创建方式......