ArrayList集合的长度是可以随机变化的,而数组的长度是不可变的。
对于ArrayList来说,有一个尖括号 < E > 代表泛型。
泛型:装在集合中的所有元素全都是统一的某个类型。
注意:泛型只能是引用类型,不是能基本类型,若要用基本类型,则使用基本类型的包装类。
ArrayList<String> list = new ArrayList<>();
//从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的。
/*
从JDK 1.5+开始,支持自动装箱和自动拆箱。
自动装箱:基本类型 ------> 包装类型
自动拆箱:包装类型 ------> 基本类型
*/
习题一:生成6个1~33之间的随机整数,添加到集合,并遍历集合。
package demo02;
import java.util.Random;
import java.util.ArrayList;
public class demo02 {
public static void main(String[] args) {
Random r = new Random(); //范围在[0,33)
ArrayList<Integer> list = new ArrayList<>(); //包装类型的集合
for (int i = 0; i < 6; i++) { //循环6次
int num = r.nextInt(33) + 1; //范围在[1,34),即[1,33]
list.add(num); //将数值加入集合中
}
System.out.println(list); //打印输出集合是否正确存在
System.out.println("======================="); //分隔开,看的清楚
for (int i = 0; i < list.size(); i++) { //遍历集合
System.out.println(list.get(i)); //打印输出
}
}
}
运行结果为:
习题二:自定义4个学生对象,添加到集合,并遍历
//Student对象
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
//main类
import java.util.ArrayList;
public class demo02 {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> list = new ArrayList<>();
//创建4个学生对象
Student s1 = new Student("小李",18);
Student s2 = new Student("小刘",17);
Student s3 = new Student("小王",19);
Student s4 = new Student("小陈",20);
//把学生对象加入到集合中
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
//检查是否加入到集合中
System.out.println(list);
//遍历集合
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println("姓名:" + stu.getName() + "\t年龄:" + stu.getAge());
}
}
}
运行结果为:
习题三:定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素,格式参照{元素@元素@元素}。
import java.util.ArrayList;
public class demo02 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>(); //创建集合
//将元素添加到集合中
list.add("小明");
list.add("小红");
list.add("小兰");
list.add("小黄");
//使用方法
printArrayList(list);
}
//定义指定打印格式的方法
public static void printArrayList(ArrayList<String> list){
System.out.print("{");
for (int i = 0; i < list.size(); i++) { //遍历
if(i == list.size()-1) //判断是否为最后一个元素
{
System.out.print(list.get(i)); //如果是则只打印元素
}
else {
System.out.print(list.get(i) + "@"); //否则打印元素并加一个@
}
}
System.out.println("}"); //最后在打印一个 } 并换行
}
}
运行结果为:
习题四:用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到 小集合当中,要求用自定义的方法来筛选。
import java.util.ArrayList;
import java.util.Random;
public class demo02 {
public static void main(String[] args) {
Random r = new Random(); //创建生成随机数
ArrayList<Integer> blist = new ArrayList<>(); //创建大集合
for (int i = 0; i < 20; i++) { //生成20个随机数
int num = r.nextInt(100) + 1; //生成数的范围在[1,101),即[1,100]
blist.add(num); //将20个随机数添加到大集合中
}
System.out.println(blist); //打印输出大集合
watch(blist); //使用自定义的方法
}
public static void watch(ArrayList<Integer> list) { //定义将大集合中偶数放入小集合的方法
ArrayList<Integer> slist = new ArrayList<>(); //创建一个小集合
for (int i = 0; i <list.size() ; i++) { //进行遍历
int even = list.get(i);
if(even%2 == 0){ //判断随机数是否为偶数
slist.add(even); //如果是则放入小集合中
}
}
System.out.println(slist); //最后打印输出小集合
}
}
运行结果为: