Loading... # ArrayList类 ## 对象数组 使用学生数组,存储三个学生对象, 代码如下: **类定义** ```java package Fivk; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` **方法** ```java package Fivk; public class demo01ArrayList { public static void main(String[] args) { //创建学生数组 Student[] students = new Student[3]; //创建学生对象 Student s1 = new Student("曹操",40); Student s2 = new Student("刘备",35); Student s3 = new Student("孙权",30); //把学生对象作为元素赋值给学生数组 students[0] = s1; students[1] = s2; students[2] = s3; //遍历学生数组 for(int x=0; x<students.length; x++) { Student s = students[x]; System.out.println(s.getName()+"‐‐‐"+s.getAge()); } } } ``` 到目前为止,我们想存储对象数据,选择的容器,只有对象数组。而数组的长度是固定的,无法适应数据变化的需求。 为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据 ## 什么是ArrayList类 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储 的元素。 ArrayList 中可不断添加元素,其大小也自动增长。 ## ArrayList使用步骤 **查看类** java.util.ArrayList :该类需要 import导入使后使用。 表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使 用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。 代码如下: ```java ArrayList<String>,ArrayList<Student> ``` **查看构造方法** `public ArrayList()` :构造一个内容为空的集合。 基本格式: ```java ArrayList<String> list = new ArrayList<String>(); ``` 在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。 简化格式: ```java ArrayList<String> list = new ArrayList<>(); ``` **查看成员方法** public boolean add(E e) : 将指定的元素添加到此集合的尾部。 参数 E e ,在构造ArrayList对象时, 指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据 类型的对象。 使用ArrayList类,存储三个字符串元素,代码如下: ```java package Fivk; import java.util.ArrayList; public class demo01ArrayList { public static void main(String[] args) { //创建学生数组 ArrayList<String> list = new ArrayList<>(); //创建学生对象 String s1 = "曹操"; String s2 = "刘备"; String s3 = "孙权"; //打印学生ArrayList集合 System.out.println(list); //把学生对象作为元素添加到集合 list.add(s1); list.add(s2); list.add(s3); //打印学生ArrayList集合 System.out.println(list); } } ``` ## 常用方法和遍历 对于元素的操作,基本体现在——增、删、查。常用的方法有: * public boolean add(E e) :将指定的元素添加到此集合的尾部。 * public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。 * public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。 * public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。 这些都是最基本的方法,操作非常简单,代码如下: ```java package Fivk; import java.util.ArrayList; public class demo01ArrayList { public static void main(String[] args) { //创建集合对象 ArrayList<String> list = new ArrayList<String>(); //添加元素 list.add("hello"); list.add("world"); list.add("java"); //public E get(int index):返回指定索引处的元素 System.out.println("get:"+list.get(0)); System.out.println("get:"+list.get(1)); System.out.println("get:"+list.get(2)); //public int size():返回集合中的元素的个数 System.out.println("size:"+list.size()); //public E remove(int index):删除指定索引处的元素,返回被删除的元素 System.out.println("remove:"+list.remove(0)); //遍历输出 for(int i = 0; i < list.size(); i++){ System.out.println(list.get(i)); } } } ``` ## 如何存储基本数据类型 ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 不能写,但是存储基本数据类型对应的 包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写,转换写法如下: | 基本类型 | 基本类型包装类 | | ---------- | ---------------- | | byte | Byte | | short | Short | | int | Integer | | long | Long | | float | Float | | double | Double | | char | Character | | boolean | Boolean | 我们发现,只有 Integer 和 Character 需要特殊记忆,其他基本类型只是首字母大写即可。 ## 方法摘要 | 返回类型 | 功能类 | 功能描述 | | ---------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | boolean | add(E e) | 将指定的元素添加到此列表的尾部 | | void | add(int index, E element) | 将指定的元素插入到此列表的指定位置 | | boolean | addAll(Collection<? extends E> c) | 按照指定的迭代器所返回的元素顺序,将该collection中所有元素添加到此列表的尾部 | | boolean | addAll(int index, Collection<? extends E> c) | 从指定的位置开始,将指定 collection中的所有元素插入到此列表中 | | void | clear() | 移除此列表中的所有元素 | | Object | clone() | 返回此ArrayList实例的浅表副本 | | boolean | contains(Object o) | 如果此列表中包含指定的元素,则返回true | | void | ensureCapacity(int minCapacity) | 如果有必要,增加此ArrayList实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数 | | E | get(int index) | 返回此列表中指定位置上的元素 | | int | indexOf(Object o) | 返回此列表中首次出现的指定元素的引用,或如果此列表不包含元素,则返回-1 | | int | lastIndexOf(Object o) | 返回此列表中最后一此出现的指定元素的引用,或如果此列表不包含索引,则返回-1 | | boolean | isEmpty() | 如果此列表没有元素,则返回true | | E | remove(int index) | 移除此列表中指定位置上的元素 | | boolean | remove(Object o) | 移除此列表中首次出现指定元素(如果存在) | | protected void | removeRange(int fromIndex, int toIndex) | 移除列表中索引在`[fromIndex, toIndex)`之间的元素 | | E | set(int index, E element) | 用指定元素代替此列表中指定位置上的元素 | | int | size() | 返回此列表中的元素数 | | Object | toArray() | 按适当顺序(从第一个到最后一个)返回包含此列表中所有元素的数组 | | <T> T[] | toArray(T[] a) | 按适当顺序(从第一个到最后一个)返回包含此列表中所有元素的数组;返回数组运行时类型时指定数组的运行时类型 | | void | trimToSize() | 将此ArrayList 实例的容量调整为列表的当前大小 | ![](https://blog.fivk.cn/usr/uploads/2021/10/2764500094.png) 应为撰写页面和文字页面显示不一样,所以留一张撰写页面的截图方便查看。这些都是我从jdk文档里面找的,不会有错。 最后修改:2021 年 10 月 05 日 © 禁止转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏