LongJL 发表于 2021-7-11 21:04

【自学笔记】 Java基础 - ArrayList

# ArrayList

## 概述
- java.util.ArrayList 是大小可变得数组的实现,存储再内的数据称为元素,此类提供一些方法操作内部存储的元素
- ArrayList中可以不断添加元素,其大小也自动增长。

## 集合和数组的区别
- 共同点:都说存储数据的容器
- 不同点:数组的容量是固定的,集合的容量是可变的

## 构造方法
- ArrayList():构造一个初始容量为10的空列表
- ArrayList(Collection<? extends E> c):构造一个包含指定collection的元素列表,这些元素是按照该collection的迭代器返回他们的顺序排列的
- ArrayList(int initialCapacity):构造一个具有指定初始容量的空列表

## 常用方法
- public boolean add(E e):将指定的元素追加到此列表的末尾。
- public void add(int index,E element)在此列表中的指定位置插入指定的元素。
- public E get(int index):返回此列表中指定位置的元素。
- public E remove():集合当中删除元素,参数就是索引编号,返回值就是被删除的元素。将任何后续元素移动到左侧(从其索引中减去一个元素)。
- public boolean remove(Object o):从列表中删除指定元素的第一个出现(如果存在)。将任何后续元素移动到左侧(从其索引中减去一个元素)。
- public int size():获取集合的尺寸长度,返回值是集合当中包含的元素个数。
- public E set(int index,E element):用指定的元素替换此列表中指定位置的元素。
- public void clear()从列表中删除所有元素。 此呼叫返回后,列表将为空。
注:在做遍历删除的时候要特别注意"remove"方法,因为它在删除元素后,后面的元素会往前走一位
```Java
public class Demo2ArrayList {
    public static void main(String[] args) {
      // 创建集合容器的对象
      ArrayList list = new ArrayList();

      // add方法想容器中添加数据
      list.add("a");
      list.add(123);
      list.add(false);

      for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
      }
    }
}
```

```Java
public class Demo3ArrayList {
    public static void main(String[] args) {
      ArrayList<String> list = new ArrayList<>();
      // public boolean add(E e):将指定的元素追加到此列表的末尾。
      list.add("111");
      list.add("222");
      list.add("333");
      list.add("444");
      // public void add(int index,E element)在此列表中的指定位置插入指定的元素。
      list.add(0,"666");

      System.out.println(list);

      // public E get(int index):返回此列表中指定位置的元素。
      System.out.println(list.get(2)); // 222

      // public E remove():从集合当中删除元素,参数就是索引编号,返回值就是被删除的元素。
      list.remove(2);
      System.out.println(list); //

      // public E remove():集合当中删除元素,参数就是索引编号,返回值就是被删除的元素。
      list.remove("111");
      System.out.println(list);//

      // public int size():获取集合的尺寸长度,返回值是集合当中包含的元素个数。
      System.out.println(list.size()); //3
      
      // public E set(int index,E element):用指定的元素替换此列表中指定位置的元素。
      list.set(1,"888");
      System.out.println(list); //
      
      // public void clear()从列表中删除所有元素。 此呼叫返回后,列表将为空。
      list.clear();
      System.out.println(list);// 空
    }
}
```

## 集合类型限制
- ArrayList<String> list = new ArrayList<>; 创建了一个ArrayList集合,集合的名称是list,里面装的全都是string类型的数据。备注:从JDK1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的!
- <>泛型:对集合容器存储的数据类型进行限制

## 注意事项
- 集合容器如果没有加入<>,就可以存储任意数据类型
- 对于ArrayList集合来说,直接打印得到的不算地址值,而是内容。
- 如果内容是空,得到的是空的中括号[];
- 添加的数据必须和类型相匹配!!!!!
- 泛型:装在集合当中的元素,全都是统一的类型!泛型只能是引用类型,不能是基本类型。

## 拓展
ArrayList集合存储基本类型:
        使用基本类型对应的包装类:
               

| 基本类型 | 包装类(引用类型,包装类都位于java.lang包下) |
| -------- | ------------------------------------------- |
| byte   | Byte                                        |
| short    | Shoot                                       |
| int      | Integer 【特殊】                            |
| long   | Long                                        |
| float    | Floot                                       |
| double   | Double                                    |
| char   | Character【特殊】                         |
| boolean| Boolean                                     |

注:
- 从JAD 1.5+开始,支持自动装箱、自动拆箱。
        自动装箱:基本类型-->包装类型
        自动拆箱:包装类型-->基本类型

default_0419 发表于 2021-7-11 22:56

同样也在学习。支持

LongJL 发表于 2021-7-11 22:58

default_0419 发表于 2021-7-11 22:56
同样也在学习。支持

共同加油{:17_1078:}

baren 发表于 2021-7-12 08:40

一起学习,一起加油

silent小泷 发表于 2021-7-12 08:45

与君共勉

LongJL 发表于 2021-7-12 09:22

silent小泷 发表于 2021-7-12 08:45
与君共勉

:handshake 共同进步

MissBanana 发表于 2021-7-12 09:26

加油!(来自一个四年java狗的鼓励

LongJL 发表于 2021-7-12 09:41

MissBanana 发表于 2021-7-12 09:26
加油!(来自一个四年java狗的鼓励

{:301_978:} 会的 谢谢支持

yamika 发表于 2021-7-12 10:16

ArrayList这种常用又基础的东西建议多读源码,了解扩容,拷贝等机制

chinasniu 发表于 2021-7-12 11:33

自学笔记 Java基础
页: [1]
查看完整版本: 【自学笔记】 Java基础 - ArrayList