集合包括常用的ArrayList、HashMap、HashSet,也有不常用的Stack、Queue,有线程安全的Vector、HashTable,也有线程不安全的LinkedList、TreeMap等。

  • Arraylist                                                         

  ArrayList是实现List接口的动态数组,初始容量10,即数组大小。在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作(数据向新数组的重新拷贝)。不是同步的,多线程中使用,最好在创建的时候保证同步。

  例如  :

 List list = Collections.synchronizedList(new ArrayList()); 

  新建:即创建一个transient修饰的数组。

  新增:

    方法:add(E e)、add(int index, E element)、addAll(Collection<? extends E> c)、addAll(int index, Collection<? extends E> c)、set(int index, E element)

    通常会先一步检测容器大小,查看是否需要扩容。调用ensureCapacity()方法对ArrayList集合进行扩容操作

public void ensureCapacity(int minCapacity) {//修改计时器modCount++;//ArrayList容量大小int oldCapacity = elementData.length;/** 若当前需要的长度大于当前数组的长度时,进行扩容操作*/if (minCapacity > oldCapacity) {Object oldData[] = elementData;//计算新的容量大小,为当前容量的1.5倍int newCapacity = (oldCapacity * 3) / 2 + 1;if (newCapacity < minCapacity)newCapacity = minCapacity;//数组拷贝,生成新的数组elementData = Arrays.copyOf(elementData, newCapacity);}}

    若为指定index位置插入元素add(int index, E element),会调用System.arraycopy()方法,目的就是将index位置空出来以供新数据插入,这里需要进行数组数据的右移,这是非常麻烦和耗时的,所以如果指定的数据集合需要进行大量插入操作,推荐使用LinkedList。

  删除:

    方法:remove(int index)、remove(Object o)、removeRange(int fromIndex, int toIndex)、removeAll()

    删除元素后,会调用System.arraycopy(...)方法对剩余元素位置进行调整

  获取:

    方法:get(int index)

    由于ArrayList是动态数组,所以我们完全可以根据下标来获取ArrayList中的元素,而且速度还比较快,故ArrayList适于随机访问

  • LinkedList

  LinkedList是实现List接口的链表,插入和删除时优于ArrayList,而随机访问则比ArrayList逊色些。

转载于:https://www.cnblogs.com/hws2017/p/6649434.html

Java基础 - 集合相关推荐

  1. java基础—集合框架

    java基础-集合框架 JDK1.2开始引入了集合框架的概念,以弥补java中只有数组这种容器的单一问题,这些框架多数由接口构成,另外也包含了一些对于接口实现的类,其中这些接口的最上层接口为java. ...

  2. JAVA基础+集合+多线程+JVM

    1. Java 基础 1.1. 面向对象和面向过程的区别 面向过程性能比面向对象高. 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候 等一般采用面向过程开发.但是 ...

  3. (阿里offer)春招知识点总结1:java基础+集合+并发+jvm+ssm

    写在前面:大量总结不是系统的总结,而是作者本人根据自己情况总结的,许多我很清楚的地方就不在提及,大量源码也均未提及,尤其是框架的总结提及很浅.仅作为自己短期技术栈的一个总结,只作为参考,不是一定正确的 ...

  4. java基础集合操作工具类Collections简述(java集合四)

    对集合中的元素进行排序 Collections中的sort方法使用 public class ListDemo {public static void main(String[] args) {Lis ...

  5. java基础----集合操作---实例----List集合的初始化

    文章内容:最近使用LeapMotion进行软件开发时,使用到了java API---->List集合,使用过程中遇到了一些小bug,特写此博客记录相关心得. 程序编写背景:使用leapMotio ...

  6. Java基础---集合的概述---list、set、map、泛型、collections

    集合的概述 单列集合的体系: Collection 单列集合的顶层接口 List Collection的子接口,增加了一些特有的方法,有序 可以重复 有索引 ArrayList 底层采用的数组结构实现 ...

  7. Java基础-------集合框架

    一,集合简介 1.1 集合由来: 对象的存储:①数组(基本数据类型  & 引用数据类型)  ②集合(引用数据类型)     >数组存储数据的弊端:长度一旦初始化以后,就不可变:真正给数组 ...

  8. JAVA基础---集合(一)--集合框架概述

    为什么用集合如何合理用集合,以及如何实现的和他们的实现原理,如果搞清了对于之后学习其他知识和开发是很有大帮助性的. 什么是集合框架? 集合框架是表示和操作集合的统一体系结构.所有集合框架都包含以下内容 ...

  9. 【面试专栏】第三篇:Java基础:集合篇-List、Queue

    面试中问完基础基本上就是考集合,因为集合的使用在业务开发中经常使用,而且集合的数据结构也是算法的基础,所以你对集合的掌握深度可能决定你有没有接着面的资格 List & Queue 实现类 Li ...

  10. java基础 —— 集合、异常、反射、io流、多线程

    1.集合 (Collection) #mermaid-svg-Po6HS0iqu2RMZvt5 .label {font-family: 'trebuchet ms', verdana, arial; ...

最新文章

  1. 数据库连接池连接异常com.alibaba.druid.pool.GetConnectionTimeoutException
  2. LeetCode 106. 从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inorder and Postorder Traversal)...
  3. 云计算的背后到底是什么?
  4. 《消费者报告》下调特斯拉Model 3安全评级
  5. decode 大于比较 小于_关于Decode的用法,是不是里面的条件项不能超过10?
  6. python编程入门指南-Python入门学习指南
  7. 【Python】打开/查看 pkl csv json txt 文件
  8. 面试14种神回复,HR妹子可能会爱上你!
  9. xss漏洞工具 -- xsser
  10. 大数据 | 抖音,一款神奇的APP
  11. 计算机怎么设置桌面密码忘了,win7忘记开机密码怎么办?[多图]
  12. 提供风声无组件上传类V2.11下载 解决图片尺寸读取问题
  13. StataIC——线性回归计算个股的β值
  14. 阿里云大数据ACA总结
  15. jpg图片转换成pdf文件,方法步骤
  16. 上半年、你学到了什么?
  17. 气象地图gis php代码,基于百度地图API实现自动气象站点信息显示
  18. c语言编程简易计算器代码,可编程简易计算器(代码)
  19. 2023 软考中级 数据库系统工程师 考试题型
  20. 数学建模|图与网络模型

热门文章

  1. 如何在 Mac 上合并 PDF?
  2. 在苹果Mac中如何将html网页转成PDF文件?
  3. 当磁盘工具无法修复磁盘时,你可以这样做!
  4. 用于微服务和ML解决方案管道的消息队列(Kafka和Zookeeper)
  5. elasticsearch 1.1.0 mmseg 英文数字分词
  6. springboot 集成redis实现session共享
  7. Fortran与C/C++混合编程示例
  8. [hadoop读书笔记] 第五章 MapReduce工作机制
  9. 在windows系统中使用backoff2005的测试脚本来测试分词结果
  10. Mybatis 开发神器:Fast MyBatis,太强了!