/*
* 数组的长度不可以发生改变
*
* 但是ArrayList集合的长度是可以随意变化的。
*
* 对于ArrayList来说,有一个尖括号<E>代表泛型。
* 泛型:也就是装在集合中的所有元素,全都是统一的什么类型。
* 注意:泛型只能是引用类型,不是基本类型
*
* 注意事项:
* 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
* 对于内容为空,得到的是空的中括号:[]
*
* 常用方法:
* public boolean add(E e)
* public E get(int index)
* public E remove(int index) 参数时索引编号,返回值时被删除的元素
* public int size() 获取集合尺寸长度,返回值时元素个数
*
*
*
*
* 如果希望向集合ArrayList中存储基本类型,必须使用基本类型对应的包装类
* 基本类型 包装类(引用类型,都位于java.lang包下)
* byte Byte
* short Short
* int Integer 【特殊】
* long Long
* float Float
* double Double
* char Character 【特殊】
* boolean Boolean
*
* 从jdk1.5开始,支持自动装箱、自动拆箱,不需要人工干预
* 自动装箱:基本类型--->包装类型
* 自动拆箱:包装类型--->基本类型
*
*
* */
package cn.zst.day07.demo03;
import java.util.ArrayList;
import java.util.Random;
public class Demo02ArrayList {
public static void main(String[] args) {
// 创建一个ArrayList集合,集合名称是list,里面装的全部是String字符串类型数据
// 备注:从JDK1.7开始,右侧尖括号<>中可以不写内容,但是<>本身要写
ArrayList<String> list = new ArrayList<>();
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(0);
System.out.println(whoRemoved);
System.out.println(list);
//长度
int size = list.size();
System.out.println(size);
// 基本类型的集合
ArrayList<Integer> listC = new ArrayList<>();
listC.add(100);
listC.add(200);
int n = listC.get(1);
System.out.println("第一号元素是:" + n);
System.out.println("=============================");
//练习
//1.生成6个1~33之间的随机整数,添加集合,并遍历集合
ArrayList<Integer> listD = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 6; i++) {
int num = r.nextInt(33) + 1;
listD.add(num);
}
System.out.println(listD);
for (int i = 0; i < listD.size(); i++) {
System.out.println(listD.get(i));
}
System.out.println("=============================");
//2.自定义4个学生对象,添加到集合,并遍历集合
ArrayList<Person> listStudent = new ArrayList<>();
listStudent.add(new Person("张三", 18));
listStudent.add(new Person("李四", 28));
listStudent.add(new Person("王五", 38));
listStudent.add(new Person("赵六", 48));
System.out.println(listStudent);
for (int i = 0; i < listStudent.size(); i++) {
System.out.println("姓名:" + listStudent.get(i).getName() + ",年龄:" + listStudent.get(i).getAge());
}
System.out.println("=============================");
//3.定义以指定格式打印集合的方法(ArrayList作为参数),打印以 {元素@元素} 的字符串
ArrayList<String> listE = new ArrayList<>();
listE.add("乔峰");
listE.add("段誉");
listE.add("虚竹");
listE.add("阿朱");
listE.add("王语嫣");
listE.add("西夏公主");
System.out.println(listE);
printArrayList(listE);
System.out.println("=============================");
// 4.用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合。
// 要求使用自定义的方法来实现筛选
ArrayList<Integer> listF = new ArrayList<>();
Random ran = new Random();
for (int i = 0; i < 20; i++) {
listF.add(ran.nextInt());
}
System.out.println(listF);
ArrayList<Integer> numbers = getEvenNumbers(listF);
System.out.println(numbers);
}
/**
*
* @param list
*/
public static void printArrayList(ArrayList<String> list) {
String str = "{";
int size = list.size();
for (int i = 0; i < size; i++) {
if (i == size - 1) {
str += list.get(i);
} else {
str += list.get(i) + "@";
}
}
str += "}";
System.out.println(str);
}
/**
*
* @param list
* @return ArrayList<Integer>
*/
public static ArrayList<Integer> getEvenNumbers(ArrayList<Integer> list) {
ArrayList<Integer> evenNumbersList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i) % 2 == 0) {
evenNumbersList.add(list.get(i));
}
}
return evenNumbersList;
}
}
package cn.zst.day07.demo03;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
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;
}
}