集合--List集合练习--集合的嵌套、Random类获取随机数

本文探讨了Java中List集合的嵌套使用,并详细讲解了如何利用Random类生成随机数。通过一系列习题,帮助读者巩固这两个核心概念。
摘要由CSDN通过智能技术生成

集合的嵌套

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值