集合的嵌套
import java.util.Objects;
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;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name);
}
}
import java.util.ArrayList;
import java.util.Iterator;
/*
集合的嵌套练习:
需求:目前,学院学员有十三期和十四期,十四期有很多学生,每个学生都是一个学生对象,
可以用一个集合表示一个班有45个人
十四期的学生:ArrayList<Student> classList14
十三期也可以用集合表示:
十三期的学生:ArrayList<Student> classList13
无论是十三期还是十四期也好,都是学院的班级。
学院也可以用集合表示:ArrayList<ArrayList<Student>> shujia
这样的现象叫做集合的嵌套。
*/
public class ListQianTaoDemo {
public static void main(String[] args) {
//定义一个十四期班级的集合
ArrayList<Student> classList14 = new ArrayList<>();
//定义一个十三期班级的集合
ArrayList<Student> classList13 = new ArrayList<>();
//定义一个学院集合
ArrayList<ArrayList<Student>> shujia = new ArrayList<>();
//将十四期和十三期放到学院中
shujia.add(classList14);
shujia.add(classList13);
//创建十四期的学生对象
Student s1 = new Student("刘生发", 18);
Student s2 = new Student("朱佳乐", 19);
Student s3 = new Student("李玉伟", 17);
Student s4 = new Student("陶华根", 20);
Student s5 = new Student("吕常福", 21);
//将学生对象添加到14期集合中
classList14.add(s1);
classList14.add(s2);
classList14.add(s3);
classList14.add(s4);
classList14.add(s5);
//创建十三期的学生对象
Student s11 = new Student("小花", 18);
Student s22 = new Student("陈丹", 19);
Student s33 = new Student("夏天", 17);
Student s44 = new Student("陈俊荣", 20);
Student s55 = new Student("小虎", 17);
//将学生对象添加到13期集合中
classList13.add(s11);
classList13.add(s22);
classList13.add(s33);
classList13.add(s44);
classList13.add(s55);
classList14.add(s55);
//遍历
//增强for循环遍历
// for(ArrayList<Student> clazz : shujia){
// for(Student s : clazz){
// System.out.println(s);
// }
// }
//普通for循环遍历
// for(int i=0;i<shujia.size();i++){
// if(i==0){
// System.out.println("==========十四期:==========");
// for(int j=0;j<shujia.get(i).size();j++){
// Student student = shujia.get(i).get(j);
// System.out.println(student);
// }
// }else if(i==1){
// System.out.println("==========十三期:==========");
// for(int j=0;j<shujia.get(i).size();j++){
// Student student = shujia.get(i).get(j);
// System.out.println(student);
// }
// }
// }
//迭代器遍历
Iterator<ArrayList<Student>> shujiaIter = shujia.iterator();
while (shujiaIter.hasNext()){
ArrayList<Student> clazz = shujiaIter.next();
Iterator<Student> clazzIter = clazz.iterator();
while (clazzIter.hasNext()){
Student student = clazzIter.next();
System.out.println(student);
}
}
}
}
Random类获取随机数
import java.util.ArrayList;
import java.util.Random;
/*
获取10个1-20之间的随机数,要求不能重复
数组可以实现码?长度不好确定,我们选择集合
Random类:public int nextInt(int bound) :左闭右开--[0,bound)或(bound,0]
*/
public class RandomTest {
public static void main(String[] args) {
//1、创建随机数对象
Random random = new Random();
//2、创建集合对象存储随机数
ArrayList<Integer> arr = new ArrayList<>();
//该方法会在int类型的范围内取随机数
//方法调错了
// int i = random.nextInt();
// System.out.println(i);
//定义一个变量统计集合中是否有10个元素
int count = 0;
while (count<10){
//产生随机数
int i = random.nextInt(20) + 1;
//判断集合中是否有该随机数
if(!arr.contains(i)){
arr.add(i);
count++;
}
}
System.out.println(arr);
}
}
习题
/*
键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class ArrayListTest1 {
public static void main(String[] args) {
//创建Scanner对象
Scanner sc = new Scanner(System.in);
//创建集合存储输入的数据
ArrayList<Integer> arr = new ArrayList<>();
while (true){
//接收键盘录入数据
int number = sc.nextInt();
if(number==0){
break;
}else {
arr.add(number);
}
}
//Arrays工具类中有一个方法sort()
//集合转数组
Object[] objects = arr.toArray();
Arrays.sort(objects);
//最后一个是最大值
Integer maxNumber = (Integer)objects[objects.length - 1];
//第一个是最小值
Integer minNumber = (Integer)objects[0];
System.out.println("最小值为:"+minNumber);
System.out.println("最大值为:"+maxNumber);
}
}