ArrayList类
什么是ArrayList类
ArrayList是可以实现长度可变的数组存储在内的数据称为元素。此类提供一 些方法来操作内部存储的元素。ArrayList 中可不断添加元素,其大小也自动增长。
我们知道定义的数组长度是不可以改变了,而ArrayList就客服了这点,可以根据需要随时添加元素,加长长度。
JDK_API 中的 介绍如图:
ArrayList的使用步骤
三步:导包——创建——使用
导包: import java.util.ArrayList < E >
< E >表示一种指定的数据类型,叫做泛型。
泛型只能是引用类型,不能是基本数据类型
E,取自Element (元素)的首字母。在出现E的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
对于ArrayList来说,有一个尖括号< E >代表泛型。
泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。
注意:泛型只能是引用类型,不能是基本类型。
注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
如果内容是空,得到的是空的中括号: []
导包创建引用示例代码:
import java.util.ArrayList;
public class ArrayTestTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
list.add("赵丽颖");
System.out.println(list);
list.add("张三");
list.add("李四");
System.out.println(list);
}
}
输出结果如图:
这代码中add(100)是错误的,因为在创建ArrayList时尖括号内的类型是String。在list这个对象就只能存入String类。
ArrayList 常用方法
add() get() remove() size()
add() 方法,添加一个元素
get(n) 方法,获取第n号元素
remove(n) 方法 去除第n号元素
size() 方法,返回集合中元素的个数
示例代码:
import java.util.ArrayList;
public class ArrayTestTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
list.add("赵丽颖");
System.out.println(list);
list.add("张三");
list.add("李四");
System.out.println(list);
String name = list.get(1);
System.out.println(name);
String whoRemoved = list.remove(2);
System.out.println("被移除的元素是:"+whoRemoved);
System.out.println(list);
int size = list.size();
System.out.println("集合的长度是:"+size);
}
}
输出结果:
遍历所有元素
用for循环遍历,size()方法
代码如下:
import java.util.ArrayList;
public class ArrayTestTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("赵丽颖");
list.add("张三");
list.add("李四");
list.add("李五");
list.add("李六");
list.add("李七");
list.add("李八");
list.add("李九");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
用ArrayList存放基本数据类型
向ArrayList类的对象中存储基本数据类型,必须使用基本数据类型对应的包装类。写成以下方式错误:
ArrayList<int> arrayA = new ArrayList<>();
泛型不能直接写成int,long,float等,需写成包装类。包装类是引用类型,在java.lang包中有。
不同基本数据类型与包装类型的对应关系如下:
基本类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
这里需要特别注意int 和char 的包装类型,分别是Integer 和Character,其他首字母大即可
代码示例:
import java.util.ArrayList;
public class ArrayTestTest {
public static void main(String[] args) {
ArrayList<Integer> listA = new ArrayList<>();
listA.add(100);
listA.add(200);
listA.add(300);
System.out.println(listA);
System.out.println(listA.get(1));
}
}
输出结果如下:
自定义泛型
ArrayList中的泛型可以定义为自己定义的类生成的对象。
这里自定义一个Bean类型,然后在ArrayList中引用。
代码如下:
public class Bean {
private String name;
private int age;
public Bean() {
}
public Bean(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;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
另一个类中引用Bean类
import java.util.ArrayList;
public class ArrayTestTest {
public static void main(String[] args) {
ArrayList<Bean> listA = new ArrayList<>();
Bean one = new Bean("张三",20);
Bean two = new Bean("李四",30);
Bean three = new Bean("王五",16);
listA.add(one);
listA.add(two);
listA.add(three);
for(int i=0;i<listA.size();i++) {
System.out.println("姓名:"+ listA.get(i).getName() + "年龄:" + listA.get(i).getAge());
}
}
输出结果如下:
——————————————