ArrayList类的理解概述:
- java.util.ArrayList类是大小可变的,可存储不同类型对象的集合。
ArrayList类的使用概述:
- ArrayList类作为已封装定义好的类,最直接的用法就是构造方法创建对象,对象调用成员方法。
ArrayList类的构造方法:
-public ArrayList<T>() :构造一个内容为空的集合,T为集合的泛型。ArrayList对象可调用的方法:
-public boolean add(E e) : 将指定的元素添加到此集合的尾部。
-public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
-public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
-public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
ArrayList类的测试代码:
/**运行前提:
*IDEA提示下导入相关jar包
*导入符合参数运行要求的自定义Goods类
*/
public class arrayListCode {
public static void main(String[] args) {
show1();
show2();
}
/**show1():
* 1.创建集合
* 2.对集合元素增,删,查
*/
static void show1(){
Goods hotDog = new Goods("Tom's", 1.5);
Goods hamBurger = new Goods("KFC", 10.0);
//1.
ArrayList<Goods> list1 = new ArrayList<Goods>(); //无参数方法构造一个内容为空的集合
//ArrayList<String> list = new ArrayList<String>();
//2.
list1.add(hotDog); //将元素添加到集合的尾部
list1.add(hamBurger);
System.out.println("增:" + list1);//增:[MyTest.Goods@1b6d3586, MyTest.Goods@4554617c]
//list.add(E e); 添加的元素e的类型E与ArrayList<E>对应
//
Goods a = list1.remove(0); //删除指定索引的元素,返回被删除的元素
System.out.println("删:" + a + "其余元素索引上提");//删:MyTest.Goods@1b6d3586其余元素索引上提
//
Goods b = list1.get(0); //返回指定位置上的元素
System.out.println("查:" + b);//查:MyTest.Goods@4554617c
//
//依照集合元素数,自定义格式遍历打印集合,规避了越界
int list1Size = list1.size();//返回集合中的元素
for (int i = 0; i < list1Size; i++) {
System.out.println("***" + list1.get(i) + "***");
}//***MyTest.Goods@4554617c***
}
/**show2():
* 创建数组,集合对象
* 测试数组定长,集合不定长的特性
*/
static void show2(){
//1.数组类定长,集合类不定长
int[] arr = new int[20];
ArrayList<Integer> list2 = new ArrayList<Integer>();
//ArrayList对象只能存储引用类型数据,<int>错误
ArrayList<Character> list2 = new ArrayList<int>(); 什么意思???
//ArrayList<Double> list2 = new ArrayList<double>();
//除了Integer和Character,其他基本类型包装类都是基本类型首字母大写
//2.添加随机数到数组,集合中
Random random = new Random();
int count = 0;
for (int i = 0; i < 20; i++) {
int r = random.nextInt(1000) + 1;
arr[i] = r;
if (r % 2 == 0) {
count++;//对于偶数元素需要计数,为转移元素的新数定长
}
}
for (int i = 0; i < 20; i++) {
int r = random.nextInt(1000) + 1;
list2.add(r); //集合不需要计数。
}
//
//3.创建定长新数组,新集合分别来保存上步数组,集合的偶数元素
int[] smallArr = new int[count];
for (int i = 0, j = 0; j < arr.length; j++) {
if (arr[j] % 2 == 0) {
smallArr[i] = arr[j];
i++;
}
}
ArrayList<Integer> smallList = new ArrayList<>();
for (int i = 0; i < list2.size(); i++) {
Integer num = list2.get(i);
if (num % 2 == 0) {
smallList.add(num);
}
}
//
//4.打印新数组,新集合
System.out.println("保留偶数的小数组需要时刻注意索引不越界");
for (int i = 0; i < smallArr.length; i++) {
System.out.print(smallArr[i] + " ");//790 734 96 820 264 718 834 92 480 516
}
System.out.println("保留偶数的小集合不需要时刻注意索引不越界");
System.out.println(smallList);//[930, 272, 112, 116, 246, 852, 672, 750, 944, 550, 796, 166]
}