首页 > 其他分享 >List集合学习笔记

List集合学习笔记

时间:2022-09-07 20:33:49浏览次数:68  
标签:ArrayList 元素 List 笔记 线程 数组 集合

List集合

语法: 集合定义 List<泛型> 集合名称 = new 实现类<泛型>();

 泛型: 集合中存储数据的数据类型:
  如果存储基本数据类型的话, 那么这里就得使用基本数据类型的包装类 Integer
  也可以存储引用数据类型: List Array Object....
 //语法
1. 添加元素 boolean b = 集合名称.add(数据); //依次往后进行添加
2. 获取元素 数据类型 变量名 = 集合名称.get(下标值);
3. 集合长度 int length = 集合名称.size();
4. 普通for循环遍历集合
5. 增强for循环遍历集合
6. 在指定位置添加元素 boolean b = 集合名称.add(下标位置,数据);
7. 通过元素本身来删除元素 集合名称.remove(数据);
8. 通过下标来删除元素 集合名称.remove(下标位置);  //下标必须是int类型
9. 清空集合 集合名称.clear();

 

ArrayList的扩容机制***

ArrayList是基于数组实现的, 它的内部封装了一个Object类型的数组

通过默认构造器创建ArrayList容器时, 该数组先被初始化为空数组, 之后再首次添加数据时, 再将其初始化成 长度为10的数组.

我们也可以使用有参构造方法来创建容器,并通过参数来显式指定数组的容量, 届时 该数组初始化的长度就是指定数量的数组

如果向ArrayList中添加数组, 会造成超出数组长度限制, 则会触发自动扩容, 然后在添加数据.

扩容就是数组的拷贝, 将旧数组中的数据拷贝到新数组中, 而新数组的长度是原来长度的1.5倍

ArrayList支持扩容, 也支持缩容, 扩容是可以自动扩容, 但是缩容是只能手动缩容.

如果我们希望缩减ArrayList的容量,那么就得调用自己的方法(trimToSize()方法), 届时, 数组将按照元素实际的个数进行缩减.

 

线程安全

指多个线程在执行同一段代码的时候采用了加锁机制, 使每一次执行结果和单线程执行的结果都是一样的, 不存在执行程序时出现意外结果

 

线程不安全

指不提供加锁机制, 有可能出现多个线程先后更改数据,造成所得到的数据是脏数据

 

 

ArrayList&&LinkedList相同点和不同点***

相同点:

  • 元素有序

  • 元素可重复

  • 这两个集合都是线程不安全的.***

 

不同点:

  • 数据结构不一样. ArrayList的数据结构是数组 ,而 LinkedList的数据结构是双向链表

  • 特性不一样. ArrayList查询快,增删慢, LinkedList 查询慢, 增删快

  • 内存占用不一样, LinkedList要比ArrayList更占内存, 因为LinkedList的节点除了存储数据, 还存储了两个引用, 一个是指向了前一个元素, 一个是指向了后一个元素

 

线程安全的List集合都有哪些***

  1. 在Collections工具类型中 提供了一个方法 synchronizedXXX() (星扣耐资特d) 包装器 (不用, 效率特慢) ConcurrentModificationException 并发异常

  2. Vector集合是JDK1.5版本之前就已经存在的集合了, 它特别古老,现在没人使用它了, 它是线程安全的集合. (不用)

  3. JDK1.5版本以后提出的 JUC包(并发包)下的集合 CopyOnWriterArrayList 是线程安全的集合, 它实现了List接口, 相当于线程安全的ArrayList (用 , 线程安全, 效率也慢)

    如果后期你开发多线程项目(银行项目, 那么就得考虑 线程安全问题)

 

标签:ArrayList,元素,List,笔记,线程,数组,集合
From: https://www.cnblogs.com/y6909/p/16667167.html

相关文章

  • Map集合学习笔记
    规则:Map集合是一个双列集合,元素有键值对构成.(key-value)key值不可以重复的,value是可以重复的(因为Map中的key是存储到了set集合中)一个key只能对应一......
  • Wwise on macOS实战笔记
    前言众所周知,Wwise是一款功能极为强大的跨平台声音引擎。虽然引擎本身是跨平台的,但其设计工具(AuthoringTool)则是基于Winnows平台编写的。为了实现在Mac平台运行设计工具,......
  • 大家都能看得懂的源码之 ahooks useVirtualList 封装虚拟滚动列表
    本文是深入浅出ahooks源码系列文章的第十八篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。简介提供虚拟化列表能力的Hook,用于解决展示海量数据......
  • 给定一个字符串列表List<String> strList, 统计里面每一个字符串的出现次数。 如: {"
    给定一个字符串列表List<String>strList,统计里面每一个字符串的出现次数。如:{"aa","aa","b"}输出:{"aa",2},{"b",1}补充完整下面的方法:publicMap<Stri......
  • JavaWeb学习笔记第三弹
    一、数据库设计1、软件研发步骤2、数据库设计概念建立数据库中的表结构以及表与表之间的关联关系的过程3、数据库设计的步骤表关系:一对一、一对多(多对一)、多对多......
  • 数据库学习笔记 (本数据库学习笔记以SQL sever 2019 为例进行学习) 20220906 第五节课
    通过一个表,抽象出表的关系模式:列是同质:即每一列中的分量来自同一域,是同一类型的数据列位置互换性:区分一列是靠列名行位置互换性:区分哪一行是靠某一或某几列的值(关键字......
  • 【笔记】拓扑排序(Ⅱ)
    题单0X00P7860[COCI2015-2016#2]ARTUR好题。首先考虑本题与拓扑排序有和关系。可以想到,某些棍子的先后移动顺序是有限制的。比如:这里红色的必须比蓝色的先移动,因为......
  • Python简洁语法笔记
    defaultdict需要构造类似{k1:{v11,v12,v13,...},k2:{v21,v22,v23,...},...}结构的数据时,可以用collections.defaultdict:fromcollectionsimportdefaultdict......
  • TP6框架--CRMEB学习笔记:项目初始化+环境配置
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助最近在研究一个基于TP6的框架CRMEB,这里分享下我的开发心得首先要获取原始项目文件这里是git地址https:......
  • 开源协同OA开发平台:OA办公系统内部的云笔记
    目前市面上有许许多多的云笔记产品,所谓云笔记,主要的作用就是记录个人的备忘需求,比如每天的日程安排、突如其来的灵感、生活笔记等等,只需要一个账号,就可以多平台通用。除了......