Java基础(6) | ArrayList

# 什么是ArrayList?

ArrayList是一个数组队列,相当于 动态数组。底层采用数组实现。

# 注意事项

泛型只能是引用类型,不能是基本类型
如果希望向集合arraylist中存储基本类型,必须使用基本类型对应的包装类
ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。

# 简单使用

package com.leerep.javabase.arraylist;

import java.util.ArrayList;

public class FirstBlood {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);
        list.add("a");
        list.add("b");
        System.out.println(list);
    }
}

# 数组 VS ArrayList

package com.leerep.javabase.arraylist;
/*
* 注意事项:
* 数组一旦创建在程序运行期间不可变
* ArrayList的长度可以随时改变
* */
import java.util.ArrayList;

public class ArrayVSArrayList {
    public static void main(String[] args) {
        Actor[] actors = new Actor[3];
        actors[0] = new Actor("迪丽热巴", 20);
        actors[1] = new Actor("古力娜扎", 20);
        actors[2] = new Actor("玛尔扎哈", 20);

        System.out.println(actors);     //得到的是地址

        for (int i = 0; i < actors.length; i++) {
            System.out.println(actors[i]);      //重写toString方法后,打印对象的具体信息,不重写仍是地址值
        }

        ArrayList<Actor> al = new ArrayList<>();
        for (int i = 0; i < actors.length; i++) {
            al.add(actors[i]);
        }
        System.out.println(al);     //重写toString方法后,打印对象的具体信息,不重写数组里仍是地址值
    }
}

# 常用方法

package com.leerep.javabase.arraylist;

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListCommonMethod {
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("l");
        arrayList.add("e");     //add()函数返回值为true或者false    ArrayList集合添加动作一定成功,其他集合不一定。
        arrayList.add("e");
        arrayList.add("e");
        arrayList.add("r");
        arrayList.add("e");
        arrayList.add("p");
        System.out.println(arrayList);

        //从集合中获取元素,参数是索引
        String s = arrayList.get(0);
        System.out.println("集合的第一个元素是:" + s);

        //获取集合长度
        int l = arrayList.size();
        System.out.println("集合的长度是:" + l);

        //从集合中删除元素,参数是索引
        String deleteValue = arrayList.remove(3);
        System.out.println("删除集合的第四个元素:" + deleteValue);
        System.out.println(arrayList);

        //集合遍历
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.print(arrayList.get(i) + "	");
        }
        System.out.println();
        for (String temp :
                arrayList) {
            System.out.print(temp + "	");
        }
        System.out.println();
        for (Iterator iter = arrayList.iterator(); iter.hasNext(); ) {
            System.out.println("next is: " + iter.next());
        }

        //判断集合是否为空
        if(arrayList.isEmpty())
            System.out.println("集合为空");
        else
            System.out.println("集合非空");

        //克隆集合      浅拷贝
        ArrayList<String> al = (ArrayList<String>) arrayList.clone();
        System.out.println(al);

        //清空集合
        arrayList.clear();
        System.out.println(arrayList);
    }
}

# 存储普通类型

package com.leerep.javabase.arraylist;
/*
* 基本类型与包装类对应关系
* byte --> Byte
* short --> Short
* int --> Integer
* long --> Long
* char --> Character
* float --> Float
* double --> Double
* boolean --> Boolean
* */
import java.util.ArrayList;

public class ArrayListSaveBasicType {
    public static void main(String[] args) {
        ArrayList<Integer> alI = new ArrayList<>();
        alI.add(100);       //自动装箱      基本类型 --> 引用类型
        alI.add(200);
        System.out.println(alI);

        int a = alI.get(0);     //自动拆箱      引用类型 --> 基本类型
        System.out.println(a);

        System.out.println("=============================");

        ArrayList<Character> alC = new ArrayList<>();
        alC.add('a');
        alC.add('b');
        alC.add('c');
        System.out.println(alC);

        System.out.println("=============================");

        ArrayList<Double> alD = new ArrayList<>();
        alD.add(3.14);
        alD.add(3.1415);
        System.out.println(alD);

    }
}
原文地址:https://www.cnblogs.com/leerep/p/14381115.html