一.数组存储对象
package com.gatsby.study; /* 题目: 定义一个数组,用来存储3个Person对象。 数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。 */ public class Demo01Array { public static void main(String[] args) { // TODO Auto-generated method stub Person[] array = new Person[3]; Person one = new Person("gatsby", 24); Person two = new Person("crush", 23); System.out.println(one);// com.gatsby.study.Person@6108b2d7 // 将one当中的地址值赋值到数组的0号元素位置 array[0] = one; array[1] = two; System.out.println(array[0]); // 地址值 System.out.println(array[1]); // 地址值 System.out.println(array[1].getName()); } }
二.什么是ArrayList类?
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
ArrayList 继承了AbstractList ,并实现了 List 接口。
三.ArrayList 使用
import java.util.ArrayList; // 引入 ArrayList 类
ArrayList<E> objectName =new ArrayList<>(); // 初始化
E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。
objectName: 对象名。
package com.gatsby.study; import java.util.ArrayList; public class Demo02ArrayList { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> list = new ArrayList<>(); System.out.println(list); // [] list.add("gatsby"); System.out.println(list); list.add("crush"); System.out.println(list); // list.add(100); // 错误写法!因为创建的时候尖括号泛型已经说了是字符串,添加进去的元素就必须都是字符串才行 } }
四.ArrayList 增、删
package com.gatsby.study; import java.util.ArrayList; /* ArrayList当中的常用方法有: 1.public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。 备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。 但是对于其他集合(今后学习)来说,add添加动作不一定成功。 2.public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。 3.public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。 4.public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。 */ public class Demo03ArrayListMethod { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> list = new ArrayList<>(); System.out.println(list); // [] boolean success = list.add("Age"); System.out.println(list); System.out.println("添加动作是否成功-> " + success);// true list.add("gatsby"); list.add("crsuh"); list.add("TravelingLight"); list.add("EdSheeran"); System.out.println(list);// [Age, gatsby, crsuh, TravelingLight, EdSheeran] // 从集合中获取元素:get。索引值从0开始 String name = list.get(2); System.out.println("第二号索引位置->" + name); // 从集合中删除元素:remove。索引值从0开始。 String whoRemoved = list.remove(3); System.out.println("被删除的人是:" + whoRemoved); // TravelingLight System.out.println(list); // [Age, gatsby, crsuh, EdSheeran] // 获取集合的长度尺寸,也就是其中元素的个数 int size = list.size(); System.out.println("集合的长度是:" + size); } }
五,ArrayList 查,遍历
package com.gatsby.study; import java.util.ArrayList; import java.util.Iterator; public class Demo04ArrayListEach { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("Avicii"); arrayList.add("Crsuh"); arrayList.add("EdSheeran"); arrayList.add("Gatsby"); // 1.使用迭代器 遍历 每个集合对象都有自己的迭代器 Iterator<String> it = arrayList.iterator(); // 泛型指的是 迭代出 元素的数据类型 while (it.hasNext()) { String string = it.next();//获取迭代出的元素 System.out.println("arrayList中的元素->" + string); } // 2. 根据索引位置,遍历集合 效率最高 for (int i = 0; i < arrayList.size(); i++) { System.out.println(arrayList.get(i)); } // 3. for-each for (String string : arrayList) { System.out.println(string); } } }
tips:: Iterator 在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误。
tips: 新for循环必须有被遍历的目标。目标只能是Collection或者是数组。新式for仅仅作为遍历操作出现。
六. 存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 <int> 不能写,但是存储基本数据类型对应的
包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写
import java.util.ArrayList; /* 如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。 基本类型 包装类(引用类型,包装类都位于java.lang包下) byte Byte short Short int Integer 【特殊】 long Long float Float double Double char Character 【特殊】 boolean Boolean 从JDK 1.5+开始,支持自动装箱、自动拆箱。 自动装箱:基本类型 --> 包装类型 自动拆箱:包装类型 --> 基本类型 */ public class Demo05ArrayListBasic { public static void main(String[] args) { ArrayList<String> listA = new ArrayList<>(); // 错误写法!泛型只能是引用类型,不能是基本类型 // ArrayList<int> listB = new ArrayList<>(); ArrayList<Integer> listC = new ArrayList<>(); listC.add(100); listC.add(200); System.out.println(listC); // [100, 200] int num = listC.get(1); System.out.println("第1号元素是:" + num); } }