数组的长度不可以发生改变,但是
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);//向集合中添加元素:addboolean 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.foriSystem.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 + "@");}}}}
