添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Java 菜鸟教程

  • Java 菜鸟教程
  • Java 开发环境安装
  • Java 入门程序
  • Java JDK, JRE和JVM
  • Java 基本数据类型
  • Java 变量类型
  • Java 运算符
  • Java 输入和输出
  • Java 表达式语句
  • Java 注释
  • Java 流程控制

  • Java if...else语句
  • Java switch语句
  • Java for循环
  • Java for-each循环
  • Java while循环
  • Java break语句
  • Java continue语句
  • Java 数组

  • Java 数组(Arrays)
  • Java 多维数组
  • Java 数组复制
  • Java 面向对象(I)

  • Java 类和对象
  • Java 方法
  • Java 构造函数
  • Java 修饰符
  • Java 字符串(String)
  • Java this 关键字
  • Java final 关键字
  • Java instanceof 关键字
  • Java 递归
  • Java 面向对象(II)

  • Java 继承
  • Java 方法重写
  • Java super 关键字
  • Java 抽象类和抽象方法
  • Java 接口(Interface)
  • Java 多态
  • Java 封装
  • Java 面向对象(III)

  • Java 嵌套和内部类
  • Java 嵌套静态类
  • Java 匿名类
  • Java 单例模式
  • Java 枚举(Enum)
  • Java 枚举构造函数
  • Java 枚举与字符串
  • Java 反射(Reflection)
  • Java 包(package)
  • Java 异常处理

  • Java 异常(Exceptions)
  • Java 异常处理
  • Java throw和throws 关键字
  • Java 处理多个异常
  • Java try-with-resources
  • Java 注解(Annotations)
  • Java 日志(Logging)
  • Java 断言(Assert)
  • Java 列表(List)

  • Java 集合框架
  • Java 集合接口(Collection)
  • Java List(列表)
  • Java ArrayList
  • Java Vector(向量)
  • Java Stack(堆栈)
  • Java Queue(队列)

  • Java Queue 接口
  • Java PriorityQueue
  • Java Deque 接口
  • Java LinkedList(链表)
  • Java ArrayDeque
  • Java Map集合

  • Java Map接口
  • Java HashMap
  • Java LinkedHashMap
  • Java ConcurrentHashMap
  • Java Set集合

  • Java Set 接口
  • Java HashSet 类
  • Java Algorithms(算法)
  • Java Iterator 接口
  • Java ListIterator 接口
  • Java 输入输出(I/O)

  • Java I/O 流
  • Java InputStream 类
  • Java OutputStream 类
  • Java Reader/Writer

  • Java Reader 类
  • Java Writer 类
  • Java FileReader 类
  • Java FileWriter 类
  • Java 其他主题

  • Java Scanner 类
  • Java 类型转换
  • Java 自动装箱和拆箱
  • Java Lambda 表达式
  • Java 泛型
  • Java File 类
  • Java 包装类(Wrapper)
  • Java 命令行参数
  • Java 序列化
  • Java 网络编程
  • Java 发送邮件
  • Java 多线程编程
  • Java Applet 基础
  • Java 文档注释
  • Java 8 新特性
  • Java ArrayList

    在本教程中,我们将学习Java ArrayList类。我们将借助示例学习ArrayList不同的操作和方法。

    ArrayList类是List接口的实现,允许我们创建可调整大小的数组。

    Java ArrayList类实现List接口。

    Java 数组 与 ArrayList

    在Java中,我们需要先声明数组的大小,然后才能使用它。一旦声明了数组的大小,就很难更改它。

    要解决此问题,我们可以使用ArrayList类。  java.util包中存在的ArrayList类允许我们创建可调整大小的数组。

    与数组不同,当我们向数组列表添加或删除元素时,数组列表(ArrayList类的对象)可以自动调整其容量。 因此,数组列表也称为动态数组。

    创建ArrayList

    这是我们可以在Java中创建数组列表的方法:

    ArrayList<Type> arrayList= new ArrayList<>();

    此处,Type指示数组列表的类型。例如,

    //创建整数类型arraylist
    ArrayList<Integer> arrayList = new ArrayList<>();
    //创建字符串类型arraylist
    ArrayList<String> arrayList = new ArrayList<>();

    在上面的程序中,我们使用了Integer和String。 在这里,Integer是int类型的相应包装类。

    包装类是包装原始数据类型的类。例如,Integer类包装了int类型,Float类包装了Float类型,等等。

    注意: 我们不能创建原始数据类型(如int,float,char等)的数组列表。相反,我们必须使用它们对应的包装器类。

    对于字符串,String是一个类,没有包装类。因此,我们按原样使用String。

    我们还可以使用List接口创建ArrayList。这是因为ArrayList类实现了List接口。

    List<String> list = new ArrayList<>();

    ArrayList的方法

    ArrayList 提供了允许我们执行数组列表操作的各种方法。

    将元素添加到ArrayList

    1.使用 add() 方法

    要将单个元素添加到数组列表,我们使用add()方法。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args){
            ArrayList<String> animals = new ArrayList<>();
            //添加元素
            animals.add("Dog");
            animals.add("Cat");
            animals.add("Horse");
            System.out.println("ArrayList: " + animals);
    }

    输出结果

    ArrayList: [Dog, Cat, Horse]

    2.使用索引号

    我们还可以使用索引将元素添加到数组列表中。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args){
            ArrayList<String> animals = new ArrayList<>();
            //添加元素
            animals.add(0,"Dog");
            animals.add(1,"Cat");
            animals.add(2,"Horse");
            System.out.println("ArrayList: " + animals);
    }

    输出结果

    ArrayList: [Dog, Cat, Horse]

    3.将一个数组列表的元素添加到另一个数组列表

    要将数组列表的所有元素添加到新的数组列表,请使用addAll()方法。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args){
            ArrayList<String> mammals = new ArrayList<>();
            mammals.add("Dog");
            mammals.add("Cat");
            mammals.add("Horse");
            System.out.println("Mammals: " + mammals);
            ArrayList<String> animals = new ArrayList<>();
            animals.add("Crocodile");
            // 添加mammals所有元素到animals
            animals.addAll(mammals);
            System.out.println("Animals: " + animals);
    }

    输出结果

    Mammals: [Dog, Cat, Horse]
    Animals: [Crocodile, Dog, Cat, Horse]

    使用asList()初始化ArrayList

    与数组不同,我们不能直接初始化数组列表。 但是,我们可以使用Arrays类的asList()方法来达到相同的效果。

    为了使用asList()方法,我们必须先导入 java.util.Arrays 包。

    例如,

    import java.util.ArrayList;
    import java.util.Arrays;
    class Main {
        public static void main(String[] args) {
            //创建数组列表
            ArrayList<String> animals = new ArrayList<>(Arrays.asList("Cat", "Cow", "Dog"));
            System.out.println("ArrayList: " + animals);
            //访问数组列表中的元素
            String element = animals.get(1);
            System.out.println("访问元素: " + element);
    }

    输出结果

    ArrayList: [Cat, Cow, Dog]
    访问元素: Cow

    在上面的示例中,请注意以下表达式:

    new ArrayList<>(Arrays.asList(("Cat", "Cow", "Dog"));

    在这里,我们首先在3个元素的数组:"Cat","Cow",和"Dog"。然后,该asList()方法用于将数组转换为数组列表。

    访问ArrayList的元素

    1.使用get()方法

    要随机访问数组列表的元素,我们使用get()方法。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            ArrayList<String> animals= new ArrayList<>();
            //在数组列表中添加元素
            animals.add("Dog");
            animals.add("Horse");
            animals.add("Cat");
            System.out.println("ArrayList: " + animals);
            //从数组列表中获取元素
            String str = animals.get(0);
            System.out.print("索引0处的元素: " + str);
    }

    输出结果

    ArrayList: [Dog, Horse, Cat]
    索引0处的元素: Dog

    2.使用 iterator() 方法

    要按顺序访问数组列表的元素,我们使用iterator()方法。我们必须导入 java.util.Iterator 包才能使用此方法。例如,

    import java.util.ArrayList;
    import java.util.Iterator;
    class Main {
        public static void main(String[] args){
            ArrayList<String> animals = new ArrayList<>();
            //在数组列表中添加元素
            animals.add("Dog");
            animals.add("Cat");
            animals.add("Horse");
            animals.add("Zebra");
            //创建一个Iterator对象
            Iterator<String> iterate = animals.iterator();
            System.out.print("ArrayList: ");
            //使用Iterator的方法访问元素
            while(iterate.hasNext()){
                System.out.print(iterate.next());
                System.out.print(", ");
    }

    输出结果

    ArrayList: Dog, Cat, Horse, Zebra,

    注意事项

    • hasNext() - 如果数组列表中有下一个元素,则返回true。

    • next()  -  返回数组列表中的下一个元素

    更改ArrayList元素

    要更改数组列表的元素,我们可以使用set()方法。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            ArrayList<String> animals= new ArrayList<>();
            //在数组列表中添加元素
            animals.add("Dog");
            animals.add("Cat");
            animals.add("Horse");
            System.out.println("ArrayList: " + animals);
            //更改数组列表的元素
            animals.set(2, "Zebra");
            System.out.println("修改后的ArrayList: " + animals);
    }

    输出结果

    ArrayList: [Dog, Cat, Horse]
    修改后的ArrayList: [Dog, Cat, Zebra]

    删除ArrayList元素

    1.使用 remove() 方法

    要从数组列表中删除元素,我们可以使用remove()方法。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            ArrayList<String> animals = new ArrayList<>();
            //在数组列表中添加元素
            animals.add("Dog");
            animals.add("Cat");
            animals.add("Horse");
            System.out.println("初始ArrayList: " + animals);
            //从索引2中删除元素
            String str = animals.remove(2);
            System.out.println("最终ArrayList: " + animals);
            System. out.println("删除元素: " + str);
    }

    输出结果

    初始ArrayList: [Dog, Cat, Horse]
    最终ArrayList: [Dog, Cat]
    删除元素: Horse

    2.使用 removeAll() 方法

    要从数组列表中删除所有元素,我们使用removeAll()方法。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            ArrayList<String> animals = new ArrayList<>();
            // 在ArrayList中添加元素
            animals.add("Dog");
            animals.add("Cat");
            animals.add("Horse");
            System.out.println("初始ArrayList: " + animals);
            // 删除所有元素
            animals.removeAll(animals);
            System.out.println("最终ArrayList: " + animals);
    }

    输出结果

    初始ArrayList: [Dog, Cat, Horse]
    最终ArrayList: []

    3.使用 clear() 方法

    我们还可以使用clear()方法从数组列表中删除所有元素。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            ArrayList<String> animals= new ArrayList<>();
            //在数组列表中添加元素
            animals.add("Dog");
            animals.add("Cat");
            animals.add("Horse");
            System.out.println("Initial ArrayList: " + animals);
            //删除所有元素
            animals.clear();
            System.out.println("Final ArrayList: " + animals);
    }

    输出结果

    初始ArrayList: [Dog, Cat, Horse]
    最终ArrayList: []

    注意: clear()方法比removeAll()方法更高效。

    遍历 ArrayList

    1.使用 for 循环

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            //创建数组列表
            ArrayList<String> animals = new ArrayList<>();
            animals.add("Cow");
            animals.add("Cat");
            animals.add("Dog");
            System.out.println("ArrayList: " + animals);
            //使用for循环
            System.out.println("访问所有元素: ");
            for(int i = 0; i < animals.size(); i++) {
                System.out.print(animals.get(i));
                System.out.print(", ");
    }

    输出结果

    ArrayList: [Cow, Cat, Dog]
    访问所有元素:
    Cow, Cat, Dog,

    2.使用 forEach 循环

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            // 创建数组列表
            ArrayList<String> animals = new ArrayList<>();
            animals.add("Cow");
            animals.add("Cat");
            animals.add("Dog");
            System.out.println("ArrayList: " + animals);
            //使用forEach循环
            System.out.println("访问所有元素:  ");
            for(String animal : animals) {
                System.out.print(animal);
                System.out.print(", ");
    }

    输出结果

    ArrayList: [Cow, Cat, Dog]
    访问所有元素:
    Cow, Cat, Dog,

    在两个示例中,我们都使用循环访问了数组列表的各个元素。

    获取ArrayList的长度

    要获取数组列表的长度,我们使用size()方法。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            ArrayList<String> animals= new ArrayList<>();
            // 在arrayList中添加元素
            animals.add("Dog");
            animals.add("Horse");
            animals.add("Cat");
            System.out.println("ArrayList: " + animals);
            //获取arrayList的大小
            System.out.println("arrayList的大小: " + animals.size());
    }

    输出结果

    ArrayList: [Dog, Horse, Cat]
    arrayList的大小: 3

    对ArrayList的元素进行排序

    要对数组列表的元素进行排序,我们使用Collections类的sort()方法。为了使用它,我们必须先导入java.util.Collections包。

    默认情况下,排序以字母或数字升序进行。例如,

    import java.util.ArrayList;
    import java.util.Collections;
    class Main {
        public static void main(String[] args){
            ArrayList<String> animals= new ArrayList<>();
            //在数组列表中添加元素
            animals.add("Horse");
            animals.add("Zebra");
            animals.add("Dog");
            animals.add("Cat");
            System.out.println("未排序的ArrayList: " + animals);
            //对数组列表进行排序
            Collections.sort(animals);
            System.out.println("排序后的ArrayList: " + animals);
    }

    输出结果

    未排序的ArrayList: [Horse, Zebra, Dog, Cat]
    排序后的ArrayList: [Cat, Dog, Horse, Zebra]

    要了解有关对数组列表进行排序的更多信息,请访问Java ArrayList sort。

    Java ArrayList 转换为 数组

    在Java中,我们可以使用toArray()方法将数组列表转换为数组。例如,

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            ArrayList<String> animals= new ArrayList<>();
            //在数组列表中添加元素
            animals.add("Dog");
            animals.add("Cat");
            animals.add("Horse");
            System.out.println("ArrayList: " + animals);
            //创建一个新的String类型数组
            String[] arr = new String[animals.size()];
            //将ArrayList转换成数组
            animals.toArray(arr);
            System.out.print("Array: ");
            for(String item:arr) {
                System.out.print(item+", ");
    }

    输出结果

    ArrayList: [Dog, Cat, Horse]
    Array: Dog, Cat, Horse,

    Java Array 转换为 ArrayList

    我们还可以将数组转换为数组列表。为此,我们可以使用Arrays类的asList()方法。

    要使用asList(),我们必须先导入java.util.Arrays包。例如,

    import java.util.ArrayList;
    import java.util.Arrays;
    class Main {
        public static void main(String[] args) {
            //创建一个字符串类型的数组
            String[] arr = {"Dog", "Cat", "Horse"};
            System.out.print("Array: ");
            //打印数组
            for(String str: arr) {
                System.out.print(str);
                System.out.print(" ");
            //从数组创建ArrayList
            ArrayList<String> animals = new ArrayList<>(Arrays.asList(arr));
            System.out.println("\nArrayList: " + animals);
    }

    输出结果

    Array: Dog, Cat, Horse
    ArrayList: [Dog, Cat, Horse]

    在上面的程序中,我们首先创建了String类型的数组arr。

    然后,我们使用asList()方法将数组转换为数组列表。

    Java ArrayList 转换为 字符串

    要将数组列表转换为字符串,可以使用toString()方法。例如

    import java.util.ArrayList;
    class Main {
        public static void main(String[] args) {
            ArrayList<String> animals = new ArrayList<>();
            //在ArrayList中添加元素
            animals.add("Dog");
            animals.add("Cat");
            animals.add("Horse");
            System.out.println("ArrayList: " + animals);
            //将ArrayList转换为字符串
            String str = animals.toString();
            System.out.println("String: " + str);
    }

    输出结果

    ArrayList: [Dog, Cat, Horse]
    String: [Dog, Cat, Horse]

    注意: toString()将整个数组列表转换为单个String。

    其他 ArrayList 方法

    方法 内容描述
    clone()

    创建具有相同元素、大小和容量的新数组列表。

    contains()

    在数组列表中搜索指定的元素并返回一个布尔值。

    ensureCapacity()

    指定数组列表可以包含的总元素。

    isEmpty()

    检查数组列表是否为空。

    indexOf()

    在数组列表中搜索指定的元素,并返回该元素的索引。

    trimToSize()

    将数组列表的容量减少到当前大小。