数组的长度不可以发生改变,但是
ArrayList
集合的长度是可以随意变化的
概述及基本使用
对于ArrayList来说,有个尖括号<E>
代表泛型
泛型:是装在集合当中的所有元素,统一什么类型
,只能是引用类型,不能是基本类型
public class Demo01ArrayList {
public static void main(String[] args) {
//创建一个ArrayList集合,集合名称list,里面装的String类型
ArrayList<String> list = new ArrayList<>();
System.out.println(list);//[]
//向集合当中添加数据,需要用add方法
list.add("赵丽颖");
System.out.println(list);
}
}
对于ArrayList集合来说,直接打印得到的
不是地址值
,而是内容
,如果内容为空,则得到[]
ArrayList当中常用的方法
添加元素
public boolean add(E e);
向集合当中添加元素,参数的类型和泛型一致
public class Demo01ArrayListMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
//向集合中添加元素:add
boolean success = list.add("赵丽颖");
System.out.println(list);
System.out.println("添加的动作是否成功:"+success);//true
}
}
对于
ArrayList
集合来说,add
添加动作一定是成功的,索引返回值可用可不用
但是对于其他集合来说,add添加动作不一定是成功
获取元素
public E get(int index);
从集合当中获取元素,参数是索引编号,返回值是对应位置的元素
public class Demo02ArrayListMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
list.add("小明");
list.add("小李");
list.add("小聪");
//从集合中获取元素:get 索引值从0开始
String name = list.get(2);
System.out.println("第2号索引位置:"+name);
}
}
删除元素
public E remove(int index);
从集合当中删除元素,参数是索引编号,返回值是被删除的元素
public class Demo03ArrayListMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
list.add("小明");
list.add("小李");
list.add("小聪");
//从集合中删除元素:remove,索引值从0开始
String whoRemove = list.remove(1);
System.out.println("被删除的人是:"+whoRemove);//小李
System.out.println(list);// [小明, 小聪]
}
}
获取元素个数
public int size();
获取集合的尺寸长度,返回值是集合中包含的元素个数
public class Demo04ArrayListMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
list.add("小明");
list.add("小李");
list.add("小聪");
//获取集合元素个数
int size = list.size();
System.out.println("集合长度是:"+ size);
}
}
遍历集合
快捷键:list.fori
public class Demo02ArrayListMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("小明");
list.add("小李");
list.add("小聪");
//遍历集合
for (int i = 0; i < list.size(); i++) { //快捷键list.fori
System.out.println(list.get(i));
}
}
}
ArrayList集合存储基本元素
如果ArrayList需存储基本类型
,必须使用基本类型对应的包装类
基本类型 | 包装类(引用类型,包装类都位于java.lang包下) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
double | Double |
char | Character |
boolean | Boolean |
从JDK 1.5+开始,支持自动装箱、自动拆箱。
自动装箱:基本类型 —> 包装类型
自动拆箱:包装类型 —> 基本类型
public class ArrayListEach {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(200);
System.out.println(list); //[100, 200]
int num = list.get(1);
System.out.println("第一号元素是:"+ num); //200
}
}
📖 练习
1、题目:生成6个1~33之间的随机整数,添加到集合,并遍历集合。
思路:
1. 需要存储6个数字,创建一个集合,
2. 产生随机数,需要用到Random
3. 用循环6次,来产生6个随机数字:for循环
4. 循环内调用r.nextInt(int n),参数是33,0~32,整体+1才是1~33
5. 把数字添加到集合中:add
6. 遍历集合:for、size、get
public class Demo07 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 6; i++) {
int num = r.nextInt(33) +1;
list.add(num);
}
// 遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
2、题目:自定义4个学生对象,添加到集合,并遍历。
思路:
1. 自定义Student学生类,四个部分。
2. 创建一个集合,用来存储学生对象。泛型:
3. 根据类,创建4个学生对象。
4. 将4个学生对象添加到集合中:add
5. 遍历集合:for、size、get
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Demo08 {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Student one = new Student("小蓝",20);
Student two = new Student("小孩",20);
Student three = new Student("小米",20);
Student four = new Student("小莫",20);
list.add(one);
list.add(two);
list.add(three);
list.add(four);
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println("姓名:"+stu.getName() + " 年龄:"+stu.getAge());
}
}
}
3、题目:定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。
格式参照 {元素@元素@元素}。
public class Demo09 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("张三丰");
list.add("宋远桥");
list.add("张无忌");
list.add("张翠山");
System.out.println(list); // [张三丰, 宋远桥, 张无忌, 张翠山]
printArrayList(list);//调用方法
}
/*
定义方法的三要素
返回值类型:只是进行打印而已,没有运算,没有结果;所以用void
方法名称:printArrayList
参数列表:ArrayList
*/
private static void printArrayList(ArrayList<String> list) {
System.out.print("{");
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
if(i==list.size()-1){
System.out.print(s +"}");
}else {
System.out.print(s + "@");
}
}
}
}