到目前为止,我们想存储对象数据,选择的容器,只有对象数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题, Java 提供了另一个容器 java . util . ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。
什么是 ArrayList 类
java . util . ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动増长。
ArrayList 使用步骤查看类
java . util . ArrayList < E >该类需要 import 导入包使后使用。
< E >,表示一种指定的数据类型,叫做泛型。 E ,取自 Element (元素)的首字母。在出现 E 的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。代码如下:
ArrayList < String >,
ArrayList < Student >
查看构造方法
● public ArayList ():构造一个内容为空的集合。
基本格式:
ArrayList < String > list = new ArrayList < String >();
在 JDK 7后,右侧泛型的尖括号之内可以留空,但是>仍然要写。简化格式 :
ArrayList < String > list = new ArrayList <>();
查看成员方法
. public boolean add ( E e ):将指定的元素添加到此集合的尾部。
.参数 Ee ,在构造 ArrayList 对象时,< E >指定了什么数据类型,那么 add ( E e )方法中,只能添加什么数据类型的对象。
public boolean add ( E e ):将指定的元素添加到此集合的尾部。
public E re П jove ( int index ):移除此集合中指定位置上的元素。返回被删除的元
素。
public E get ( int index ):返回此集合中指定位置上的元素。返回获取的元素。
public int size ():返回此集合中的元素数。遍历集合时,可以控制索引范围,防
止越界。
ArrayList 对象不能存储基本类型,只能存储引用类型的数据。
类似 cint >不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据,<中的数据类型,必须转换后才能编写,转换写法如下
基本类型 | 基本类型包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
我们发现,只有 Integer 和 Character 需要特殊记忆,其他基本类型只是首字母大写
创建对象:ArrayList<引用类型(类)> 变量名 = new ArrayList<可填引用类型可不填>();
添加:ArrayList对象名.add(需要添加的对象)
删除:ArrayList对象名.remove(下标)
获取值:ArrayList对象名.get(下标)
删除ArrayList数组:数组名.clear()
练习一:
package arraylist;
import java.util.ArrayList;
public class ArrayTest {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList<>();
//ArrayList存放对象的数组,只能存放对象,不能存放变量
// strings.add("abc");
strings.add("bcd");
strings.add("gvm");
for (int i = 0; i < strings.size(); i++) {
System.out.println(strings.get(i)+" ");
}
ArrayList<String> intArraylist = new ArrayList<>();
intArraylist.add("A");
intArraylist.add("B");
intArraylist.add("A");
intArraylist.add("B");
intArraylist.add("C");
//每一个字符串都是一个对象
for (int i = 0; i < intArraylist.size(); i++) {
//注意Arraylist 的长度获取使size()
System.out.print(intArraylist.get(i)+" ");
}
}
}
练习二(ArrayList对象的创建,方法的调用):
package arraylist;
import java.util.ArrayList;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Student student1 = new Student("曹操",2055);
//创建Student类的对象
Student student2 = new Student("刘备",2045);
Student student3 = new Student("孙权",2022);
ArrayList<Student> threeKing = new ArrayList<>();
//创建一个保存Student类型对象的ArrayList数组
threeKing.add(student1);
threeKing.add(student2);
threeKing.add(student3);
System.out.println("threeking的长度"+threeKing.size());
for (int i = 0; i < threeKing.size(); i++) {
System.out.println(threeKing.get(i).getName()+
",年龄是"+threeKing.get(i).getAge());
}
threeKing.remove(0);
System.out.println("--------------------------------");
for (int i = 0; i < threeKing.size(); i++) {
System.out.println(threeKing.get(i).getName()+
",年龄是"+threeKing.get(i).getAge());
}
Student student4 = new Student("曹丕",2016);
threeKing.add(student4);
System.out.println("--------------------------------");
for (int i = 0; i < threeKing.size(); i++) {
System.out.println(threeKing.get(i).getName()+
",年龄是"+threeKing.get(i).getAge());
//显示数组里面对象的内容,调用对象里面的内容
}
threeKing.clear();
//直接把ArrayList数组直接删除:里面的对象全部删除。
System.out.println(threeKing.size());
}
}
练习三:
从键盘不断地输入数值,直到输入的是-1为止,并输出输入过的值
package arraylist;
import java.util.ArrayList;
import java.util.Scanner;
public class NumTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Integer> num = new ArrayList<>();
while(true){
System.out.println("请输入一个值:");
int key = input.nextInt();
if(key == -1)
break;
num.add(key);
//将kdy的值添加到ArrayList里面
}
for (int i = 0; i < num.size(); i++) {
System.out.println(num.get(i)+"");
}
System.out.println();
System.out.println(num.isEmpty());
//判断num是否为空
}
}