Java-集合和泛型练习-02

本文通过三个编程题目详细展示了Java中Collection集合的使用,包括迭代器遍历、增强for循环以及泛型的应用。首先,利用迭代器实现了集合的遍历、筛选和删除功能;接着,使用增强for循环遍历并打印了分数信息,计算了不及格分数的数量和平均分,以及找出最高分;最后,探讨了泛型在不同继承关系中的应用,明确了各方法的参数类型限制。这些例子有助于理解Java集合操作和泛型的基本用法。
摘要由CSDN通过智能技术生成

一 编程题【Collection集合、迭代器】

1.1 题目

​ 请定义一个Collection类型的集合,存储以下字符串:

​ “JavaEE企业级开发指南”,”Oracle高级编程”,”MySQL从入门到精通”,

​ ”Java架构师之路”

​ 请编程实现以下功能:

Ø 使用迭代器遍历所有元素,并打印

Ø 使用迭代器遍历所有元素,筛选书名小于10个字符的,并打印;

Ø 使用迭代器遍历所有元素,筛选书名中包含“Java”的,并打印

Ø 如果书名中包含“Oracle”,则删掉此书。删掉后,遍历集合,打印所有书名。

​ (注意:以上功能写在一个main()方法中,但请单独实现)

public class Test2_1 {
    public static void main(String[] args) {
        //1.使用多态创建Collection集合
        Collection<String> col = new ArrayList<>();
        //2.添加元素
        col.add("JavaEE企业级开发指南");
        col.add("Oracle高级编程");
        col.add("MySQL从入门到精通");
        col.add("Java架构师之路");

        //3.使用迭代器遍历所有元素,并打印
        System.out.println("————————————————————使用迭代器遍历所有元素,并打印——————————————————————");
        Iterator<String> iterator = col.iterator();
        while(iterator.hasNext()) {
            String book = iterator.next();
            System.out.println(book);
        }


        //4.使用迭代器遍历所有元素,筛选书名小于10个字符的,并打印;
        //注意要重新获取新的迭代器,旧的无法再次使用
        System.out.println("—————————————————————用迭代器遍历所有元素,筛选书名小于10个字符的,并打印—————————————————————");
        iterator = col.iterator();
        while(iterator.hasNext()) {
            String book = iterator.next();
            if(book.length()<10) {//判断书名小于10个字符
                System.out.println(book);
            }
        }

        //5.使用迭代器遍历所有元素,筛选书名中包含“Java”的,并打印
        System.out.println("—————————————————————使用迭代器遍历所有元素,筛选书名中包含“Java”的,并打印—————————————————————");
        iterator = col.iterator();
        while(iterator.hasNext()) {
            String book = iterator.next();
            if(book.contains("Java")) {//判断书名是否包含Java字符
                System.out.println(book);
            }
        }


        //6.如果书名中包含“Oracle”,则删掉此书。删掉后,遍历集合,打印所有书名。
        //题目要求要遍历两次,但是一次遍历其实也可以完成
        System.out.println("—————————————————————如果书名中包含“Oracle”,则删掉此书。删掉后,遍历集合,打印所有书名。—————————————————————");
        iterator = col.iterator();
        while(iterator.hasNext()) {
            String book = iterator.next();
            if(book.contains("Oracle")) {//判断书名是否包含Oracle字符
                //注意此处不要使用col.remove(book); 会有异常的风险,而应该使用迭代器的remove()方法
                iterator.remove();
            } else {
                System.out.println(book);
            }
        }

    }
}

二 编程题【增强for】

2.1 题目

​ 请定义一个Collection类型的集合,存储以下分数信息:

​ 88.5,39.2,77.1,56.8,89,99,59.5

请编程实现以下功能:

Ø 使用增强for遍历所有元素,并打印

Ø 使用增强for遍历所有元素,打印不及格的分数;

Ø 使用增强for遍历所有元素,计算不及格的分数的数量,和平均分,并打印计算结果。

Ø 使用增强for遍历所有元素,求出最高分,并打印;

(注意:以上所有功能写在一个main()方法中,但请单独实现)

public class Test3_1 {
    public static void main(String[] args) {
        //1.使用多态创建Collection集合
        Collection<Double> col = new ArrayList<>();
        //2.添加元素
        col.add(88.5);
        col.add(39.2);
        col.add(77.1);
        col.add(56.8);
        col.add(89.0);
        col.add(99.0);
        col.add(59.5);

        //    	使用增强for遍历所有元素,并打印
        System.out.println("————————————————————使用增强for遍历所有元素,并打印——————————————————————");
        for (Double score : col) {
            System.out.println(score);
        }

        //    	使用增强for遍历所有元素,打印不及格的分数;
        System.out.println("————————————————————使用增强for遍历所有元素,打印不及格的分数——————————————————————");
        for (Double score : col) {
            if(score<60) {
                System.out.println(score);
            }
        }

        //    	使用增强for遍历所有元素,计算不及格的分数的数量,和平均分,并打印计算结果。
        //定义变量用于统计不及格分数的数量
        System.out.println("————————————————————用增强for遍历所有元素,计算不及格的分数的数量,和平均分,并打印计算结果——————————————————————");
        int failNum = 0;
        //定义变量用于统计不及格分数的总分,
        double failSum = 0;
        for (Double score : col) {
            if(score<60) {
                //统计人数与总分
                failNum++;
                failSum+=score;
            }
        }
        //不及格的平均分=不及格总分/不及格数量
        double failAvg = failSum/failNum;
        System.out.println("不及格的平均分:"+failAvg);

        //    	使用增强for遍历所有元素,求出最高分,并打印;
        System.out.println("————————————————————使用增强for遍历所有元素,求出最高分,并打印——————————————————————");
        //定义变量记录最高分
        double max = 0;
        for (Double score : col) {
            if(score>max) { //每次取出的分数如果比max大,就赋值给它
                max = score;
            }
        }
        System.out.println("最高分:"+max);
    }
}

三 编程题【泛型】

3.1 题目

​ 有以下类结构:

​ 人员类(Person):

​ |–学生类(Student)

​ |–Java学生类(JavaStudent)

​ |–UI学生类(UIStudent)

​ |–教师类(Teacher)

​ |–Java教师类(JavaTeacher)

​ |–UI教师类(UITeacher)

​ 要求:

Ø 请按上述要求定义类,并实现继承关系即可(不需要定义类成员)

Ø 请按以下格式和要求定义测试类和方法:

public class Test4_1{

​ public static void main(String[] args){

​ ArrayList list1 = new ArrayList<>();

​ ArrayList list2 = new ArrayList<>();

​ ArrayList list3 = new ArrayList<>();

​ ArrayList list4 = new ArrayList<>();

​ ArrayList list5 = new ArrayList<>();

​ ArrayList list6 = new ArrayList<>();

​ ArrayList list7 = new ArrayList<>();

​ ArrayList list8 = new ArrayList<>();

​ //请测试哪些集合可以调用print1()方法

​ //请测试哪些集合可以调用print2()方法

​ //请测试哪些集合可以调用print3()方法

​ //请测试哪些集合可以调用print4()方法

​ }

​ //要求:参数可以接收任何泛型的ArrayList参数

​ public static void print1(ArrayList<______________> list){

​ }

​ //要求:参数可以接收任何Person及其子类泛型的ArrayList参数

​ public static void print2(ArrayList<______________> list){

​ }

​ //要求:参数可以接收任何Student及其子类泛型的ArrayList参数

​ public static void print3(ArrayList<______________> list){

​ }

​ //要求:参数可以接收任何Java学员,及其父类泛型的ArrayList参数

​ public static void print4(ArrayList<______________> list){

​ }

}

各个基本类


public class Person {
}

public class Student extends Person {
}


public class JavaStudent extends Student{
}

public class UIStudent extends Student{
}

public class Teacher extends Person {
}

public class JavaTeacher extends Teacher{
}


public class UITeacher extends Teacher{
}


public class Test4_1 {
    public static void main(String[] args){
        ArrayList<String> list1 = new ArrayList<>();
        ArrayList<Person> list2 = new ArrayList<>();
        ArrayList<Student> list3 = new ArrayList<>();
        ArrayList<JavaStudent> list4 = new ArrayList<>();
        ArrayList<UIStudent> list5 = new ArrayList<>();
        ArrayList<Teacher> list6 = new ArrayList<>();
        ArrayList<JavaTeacher> list7 = new ArrayList<>();
        ArrayList<UITeacher> list8 = new ArrayList<>();

        //请测试哪些集合可以调用print1()方法
        print1(list1);
        print1(list2);
        print1(list3);
        print1(list4);
        print1(list5);
        print1(list6);
        print1(list7);
        print1(list8);

        //请测试哪些集合可以调用print2()方法
        //print2(list1);
        print2(list2);
        print2(list3);
        print2(list4);
        print2(list5);
        print2(list6);
        print2(list7);
        print2(list8);

        //请测试哪些集合可以调用print3()方法
        //print3(list1);
        //print3(list2);
        print3(list3);
        print3(list4);
        print3(list5);
        //print3(list6);
        //print3(list7);
        //print3(list8);


        //请测试哪些集合可以调用print4()方法
        //print4(list1);
        print4(list2);
        print4(list3);
        print4(list4);
        //print4(list5);
        //print4(list6);
        //print4(list7);
        //print4(list8);

    }
    //要求:参数可以接收任何泛型的ArrayList参数
    public static void print1(ArrayList<?> list){

    }
    //要求:参数可以接收任何Person及其子类泛型的ArrayList参数
    public static void print2(ArrayList<? extends Person> list){
    }
    //要求:参数可以接收任何Student及其子类泛型的ArrayList参数
    public static void print3(ArrayList<? extends Student> list){
    }
    //要求:参数可以接收任何Java学员,及其父类泛型的ArrayList参数
    public static void print4(ArrayList<? super JavaStudent> list){
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值