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

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相同点和不同点***

相同点:

 

不同点:

 

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

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

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

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

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

 

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