每天写java到期末考试--复习集合与泛型--6.28

1、定义一个Student类,具有name、sex、age属性,具有getName、setName、getSex、setSex、
getAge、setAge方法和三个参数的构造方法
2、编写一个类,名字为ListDemo,在main方法中做以下工作:
定义一个可以保存Student类型对象的List类型对象list1,然后向list1中放入2个学生:new Student("张
三",“男”,20)、new Student(“李四”,“男",22)
遍历list1中的学生对象,并将每个学生的姓名、性别、年龄输出到显示器
3、定义一个可以保存String类型对象的List类型对象list2,然后向list2中放入2个字符串:"aaa"、"bbb"
遍历list2中的字符串对象,并输出到显示器
4、定义一个Map<String,Student>map=New HashMap<String,Student>();,然后向map中放入2个学
生,<"s1",new Student("王五",“男”,23)>、<"s2",new Student("王六”,“男”,24)>
遍历map中的key和value,并将每个学生的姓名、性别、年龄输出到显示器。
5、定一个Set类型的对象set1,然后向set1中放入2个学生:new Student(“张三”,“男”,20)、new
Student(“李四”,“男",22)。
遍历set1中的学生对象,并将每个学生的姓名、性别、年龄输出到显示器。
6、修改Student类,让它实现Comparable<Student>接口(实现Comparable接口的目的是为了让
Student类的对象能够比较大小,即具有比较大小的标准。具体比较标准要通过实现接口中定义的public int
compareTo(Student o)方法来定义。该方法的返回值>0,表示该方法所在的对象大于o对象 ;= 0表示该方法所
在的对象等于o对象 ;< 0表示方法所在的对象小于o对象)。具体要求如下:
这里我们要求根据Student对象的age属性比较大小,age大的对象也大,age小的对象也小。因而该方法中
要根据Student对象的age属性进行比较,如果this.age大于o.age则返回1,如果this.age等于o.age则返回0,
否则返回-1,这样即可实现按照age进行比较大小的功能,并且是age大的对象也大。(如果age是整数的话,
也可以在方法中直接返回this.age-o.age)
反之,如果想让age小的对象大,age大的对象小,则修改该方法的返回值,让this.age大于o.age则返
回-1;如果this.age等于o.age则返回0,否则返回1。(如果age是整数的话,也可以在方法中直接返回o.age-
this.age请同学们好好体会)。
7、定义一个集合List<Student>list3=new ArrayList<Student>();
然后向list3中加入3个Student对象,分别为:
new Student("张三",“男",22);
new Student("李四","男",20);
new Student("王五”,“男”,21);
然后调用Collections类的sort方法将该list3集合排序。
最后遍历输出集合list3中所有对象的姓名。

task1

1、定义一个Student类,具有name、sex、age属性,具有getName、setName、getSex、setSex、

getAge、setAge方法和三个参数的构造方法(√)

package java1;

public class Student {
    private String name;
    private String sex;
    private int age;
    public Student(){


    }
    public Student(String name,String sex,int age){
        this.age=age;
        this.sex=sex;
        this.name=name;
    }

    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
    public void setName(String name){
        this.name=name;
    }

    public String getName() {
        return name;
    }
    public String getSex(){
        return sex;

    }
    public void setSex(String name){
        this.sex=sex;
    }

}

task2

2、编写一个类,名字为ListDemo,在main方法中做以下工作:

定义一个可以保存Student类型对象的List类型对象list1,然后向list1中放入2个学生:new Student("张

三",“男”,20)、new Student(“李四”,“男",22)

遍历list1中的学生对象,并将每个学生的姓名、性别、年龄输出到显示器(√)---10min

package java1;
import java.util.ArrayList;


public class ListDome {
    public static void main(String[] args) {


    ArrayList<Student> list =new ArrayList<>();
    Student s1=new  Student("张三 ","男 ",20);
    Student s2=new Student("李四 ","男 ",22);
    list.add(s1);
    list.add(s2);
    //list.add(new Student("张 三","男",20)
        for (int i = 0; i < list.size(); i++) {
            Student stu =list.get(i);
            System.out.println(stu.getName()+stu.getSex()+stu.getAge());

        }
    }

}

task3

3、定义一个可以保存String类型对象的List类型对象list2,然后向list2中放入2个字符串:"aaa"、"bbb"

遍历list2中的字符串对象,并输出到显示器---5min


    ArrayList<String> list2=new ArrayList<>();
        list2.add("aaa");
        list2.add("bbb");
        list2.add("ccc");
        for (int i = 0; i < list2.size(); i++) {
            String str =list2.get(i);
            System.out.println(str);

        }

task4

4、定义一个Map<String,Student>map=New HashMap<String,Student>();,然后向map中放入2个学

生,<"s1",new Student("王五",“男”,23)>、<"s2",new Student("王六”,“男”,24)>

遍历map中的key和value,并将每个学生的姓名、性别、年龄输出到显示器。---20min

        // 3. 定义一个Map<String, Student> map,然后向map中放入2个学生
        Map<String, Student> map = new HashMap<>();
        map.put("s1", new Student("王五", "男", 23));
        map.put("s2", new Student("王六", "男", 24));
        for (Map.Entry<String, Student> entry : map.entrySet()) {
            String key = entry.getKey();
            Student student = entry.getValue();
            System.out.println("Key: " + key + ", Student: " + student);
        }
* `map.entrySet()`:这个方法返回`map`中所有键值对的集合(`Set<Map.Entry<K,V>>`)。每个键值对都是一个`Map.Entry`对象,它包含了键和值。  
* 在循环中,`entry`变量被用来引用集合中的每一个`Map.Entry`对象。  
* `entry.getKey()`:用于获取当前`entry`对象的键(在这里是学生的唯一标识符)。  
* `entry.getValue()`:用于获取当前`entry`对象的值(在这里是`Student`对象)。  
* `System.out.println("Key: " + key + ", Student: " + student);`:将键和值(即学生的唯一标识符和学生的信息)打印到控制台。

task5

5、定一个Set类型的对象set1,然后向set1中放入2个学生:new Student(“张三”,“男”,20)、new

Student(“李四”,“男",22)。

遍历set1中的学生对象,并将每个学生的姓名、性别、年龄输出到显示器。---10min


import java.util.HashSet;  
import java.util.Set;  
  
public class SetDemo {  
    public static void main(String[] args) {  
        Set<Student> set1 = new HashSet<>();  
        set1.add(new Student("张三", "男", 20));  
        set1.add(new Student("李四", "男", 22));  
  
        // 由于未重写Student类的equals和hashCode方法,所以即使学生信息相同,也会被认为是不同的对象  
        // 如果要按学生信息去重,需要重写Student类的equals和hashCode方法  
  
        for (Student student : set1) {  
            System.out.println("姓名: " + student.getName() + ", 性别: " + student.getSex() + ", 年龄: " + student.getAge());  
        }  
    }  
}

task6

6、修改Student类,让它实现Comparable<Student>接口(实现Comparable接口的目的是为了让

Student类的对象能够比较大小,即具有比较大小的标准。具体比较标准要通过实现接口中定义的public int

compareTo(Student o)方法来定义。该方法的返回值>0,表示该方法所在的对象大于o对象 ;= 0表示该方法所

在的对象等于o对象 ;< 0表示方法所在的对象小于o对象)。具体要求如下:

这里我们要求根据Student对象的age属性比较大小,age大的对象也大,age小的对象也小。因而该方法中

要根据Student对象的age属性进行比较,如果this.age大于o.age则返回1,如果this.age等于o.age则返回0,

否则返回-1,这样即可实现按照age进行比较大小的功能,并且是age大的对象也大。(如果age是整数的话,

也可以在方法中直接返回this.age-o.age)

反之,如果想让age小的对象大,age大的对象小,则修改该方法的返回值,让this.age大于o.age则返

回-1;如果this.age等于o.age则返回0,否则返回1。(如果age是整数的话,也可以在方法中直接返回o.age-

this.age请同学们好好体会)。

public class Student implements Comparable<Student>{



public int compareTo(Student o) {
        // 按照age升序排列
        // 如果想让age大的对象也大,则返回this.age - o.age
        // 如果想让age小的对象大,则返回o.age - this.age
        return this.age - o.age;
    }

task7

7、定义一个集合List<Student>list3=new ArrayList<Student>();

然后向list3中加入3个Student对象,分别为:

new Student("张三",“男",22);

new Student("李四","男",20);

new Student("王五”,“男”,21);

然后调用Collections类的sort方法将该list3集合排序。

最后遍历输出集合list3中所有对象的姓名。

        List<Student> list3 =new ArrayList<Student>();
        list3.add(new Student("张三","男",22));
        list3.add(new Student("李四","男",20));
        list3.add(new Student("王五","男",21));
        for (int i = 0; i < list3.size(); i++) {
            Student stu1=list3.get(i);
            System.out.println(stu1.getName()+stu1.getAge()+stu1.getSex());

        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/753154.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web渗透:php反序列化漏洞

反序列化漏洞&#xff08;Deserialization Vulnerability&#xff09;是一种在应用程序处理数据的过程中&#xff0c;因不安全的反序列化操作引发的安全漏洞&#xff1b;反序列化是指将序列化的数据&#xff08;通常是字节流或字符串&#xff09;转换回对象的过程&#xff0c;如…

松下的台灯值得入手吗?书客、飞利浦真实横评大分享!

我们都知道&#xff0c;无论是学习还是工作&#xff0c;都需要一个良好的照明环境&#xff0c;而台灯就是我们日常生活中非常重要的照明工具。它不仅能够提供额外的光线&#xff0c;还能减少眼睛疲劳&#xff0c;提高我们的工作和学习效率。 所以&#xff0c;选购一款合适的台…

240622_昇思学习打卡-Day4-ResNet50迁移学习

240622_昇思学习打卡-Day4-ResNet50迁移学习 我们对事物的认知都是一点一点积累出来的&#xff0c;往往借助已经认识过的东西&#xff0c;可以更好地理解和认识新的有关联的东西。比如一个人会骑自行车&#xff0c;我们让他去骑摩托车他也很快就能学会&#xff0c;比如已经学会…

电脑提醒事项怎么显示在桌面

在繁忙的工作节奏中&#xff0c;我们经常会面临多项任务同时进行的情况。为了确保不遗漏任何重要事务&#xff0c;设置电脑提醒事项就显得尤为重要。想象一下&#xff0c;当你正忙于一个项目时&#xff0c;电脑屏幕突然弹出一个提醒&#xff0c;告诉你接下来的会议时间&#xf…

梦想CAD二次开发

1.mxdraw简介 mxdraw是一个HTML5 Canvas JavaScript框架&#xff0c;它在THREE.js的基础上扩展开发&#xff0c;为用户提供了一套在前端绘图更为方便&#xff0c;快捷&#xff0c;高效率的解决方案&#xff0c;mxdraw的实质为一个前端二维绘图平台。你可以使用mxdraw在画布上绘…

实力认可!安全狗受聘成为福建省网信系统2024年度网络安全技术支撑单位

6月6日&#xff0c;福建省委网信办组织召开福建省网信系统2024年度网络安全技术支撑单位座谈会。 作为国内云原生安全领导厂商&#xff0c;安全狗也受邀出席此次活动。 省委宣传部副部长、省委网信办主任、省互联网信息办公室主任张远出席会议并颁发支撑单位证书。安全狗凭借出…

如何用Vue3和Plotly.js绘制动态3D图表?

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Plotly.js: 使用Vue.js动态加载数据并绘制图表 应用场景 在数据可视化应用中&#xff0c;需要将数据动态加载到图表中并进行实时更新。本文将展示如何使用Plotly.js和Vue.js实现这一功能&#xff0c;从加载外…

java基于ssm+jsp 电子商城系统

1管理员功能模块 管理员登录&#xff0c;通过填写用户名、密码进行登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入电子商城系统可以查看个人中心、用户管理、医生管理、药品信息管理、线上诊疗管理、医生信息管理、管理员管理、论坛管理、系统管理、订单管…

snowflake 不再是个数据仓库公司了

标题先上结论&#xff0c;为啥这么认为&#xff0c;且听接下来道来。 snowflake 非常成功&#xff0c;开创了云数仓先河&#xff0c;至今在数仓架构上也是相对比较先进的&#xff0c;国内一堆模仿的公司&#xff0c;传统上我们会认为 snowflake 肯定是一家数据仓库公司。不过最…

智能工业网络,需要何种工业以太网交换机作为支撑?

随着工业企业数字化及信息化的进一步深化升级&#xff0c;工业领域相关控制及信息系统的业务类型不断增加、复杂性不断提升&#xff0c;工业控制网络与工业信息网络也呈现融合趋势&#xff0c;具备支持多业务、多协议、多厂商设备和数据的互联互通、共网承载以及高质量传输能力…

vue-router的学习

vue-router 基于Vue做单页面应用时&#xff0c;vue-router可以帮我们将url地址和组件绑定&#xff0c;在我们切换路由组件时&#xff0c;url改变&#xff0c;页面无需从服务端重新加载&#xff0c;即不用刷新&#xff0c;打个比方&#xff0c;我们用美团外卖点外卖时&#xff…

一文带你彻底搞懂设计模式之单例模式!!由浅入深,图文并茂,超超超详细的单例模式讲解!!

一文带你彻底搞懂设计模式之单例模式&#xff01; 一、什么是单例模式&#xff1f;单例模式分类饿汉式创建单例对象懒汉式创建单例对象 多问一个为什么&#xff1f; 二、为什么要有单例模式&#xff1f;使用单例模式的原因单例模式的应用场景 三、多线程下的单例模式饿汉式懒汉…

【高级篇】InnoDB引擎深入:核心机制与实战优化(十五)

引言 在探索了MySQL集群与分布式技术之后,我们进入了数据库引擎的核心地带——InnoDB。作为MySQL的默认存储引擎,InnoDB凭借其对事务的支持、行级锁定、高效的恢复机制以及复杂的内存管理,成为众多应用场景的首选。本章,我们将深入InnoDB的内部机制,透彻理解锁管理、事务…

【C++】动态内存管理new和delete

文章目录 一、C的内存管理方式二、new和delete的用法1.操作内置类型2.操作自定义内置类型 三、new和delete的底层实现1.operator new和operator delete函数2.new和delete的实现原理 四、定位new表达式五、malloc/free和new/delete的区别 一、C的内存管理方式 之前在C语言的动态…

找不到vcomp140.dll怎么办,总结多种解决方法

​在日常使用电脑的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“vcomp140.dll丢失”。那么&#xff0c;vcomp140.dll是什么&#xff1f;它为什么会丢失&#xff1f;丢失后对电脑有什么影响&#xff1f;又该如何解决呢&#xff1f;本文将详细介绍vc…

leetcode 动态规划(基础版)单词拆分

题目&#xff1a; 题解&#xff1a; 一种可行的dp做法是基于完全背包问题&#xff0c;将s看成是一个背包&#xff0c;wordDict看作是物品&#xff0c;然后往s中放入物品判断最终是否可以变为给定的s即可。这道题和上一题都用到了在dp如何枚举连续子串和状态表示&#xff1a;枚…

一个 API 客户端和一份 TS 学习手册

第75期&#xff1a; Insomnia&#xff1a;超好看的 API 客户端 项目介绍&#xff1a; 一款适用于 GraphQL、REST、WebSockets 和 gRPC 的开源 API 客户端&#xff0c;颜值超高。 跨平台&#xff0c;支持 Mac、Windows 和 Linux。但不支持网页版&#xff0c;需要下载客户端。…

如何借助ai(文心一言)获取tushare的数据

1. 准备工作 确保已安装python &#xff0c;安装Tushare库 和文心一言的地址&#xff08;文心一言&#xff09;&#xff1a; 注册Tushare账号并获取Token&#xff1a;在Tushare官方网站注册账号&#xff0c;并获取个人Token。如下 tushare地址&#xff1a;&#xff08;点击即…

PD快充诱骗芯片工作原理,USB-C充电器出不来电压是什么原因?

一般使用Type-C接口的充电器基本上都是采用新的快充协议——PD快充协议&#xff0c;它不同于以前的USB-A的QC协议&#xff0c;这种协议&#xff0c;默认是没有快充电压输出的&#xff0c;VBUS和GND是0V。 所以&#xff0c;我们可以使用电阻的方式&#xff08;电流小&#xff09…

【Apache Doris】如何实现高并发点查?(原理+实践全析)

【Apache Doris】如何实现高并发点查&#xff1f;&#xff08;原理实践全析&#xff09; 一、背景说明二、原理介绍三、环境信息四、Jmeter初始化五、参数预调六、用例准备七、高并发实测八、影响因素九、总结 本文主要分享 Apache Doris 是如何实现高并发点查的&#xff0c;以…