java基础之set集合练习(HashSet,LinkedHashSet,TreeSet)

1:完成以下填空:

Collection 接口的特点是     存放list与set共性内容 没有直接实现类  没有明确的存储特点要求          ;

2:List 接口的特点是元素 有 (有|无)顺序,  (可以|不可以)重复;

Set 接口的特点是元素 无 (有|无)顺序,不可  (可以|不可以)重复;

3:(Set)关于Set 集合描述正确的是()

A.可以利用Set 创建集合对象,存储多个对象

B.可以利用下标操作集合中的数据

C.Set 集合中所有方法继承于父接口Collection

D.以上描述都不正确

4:(List、Set)仔细阅读以下程序,关于程序描述正确的是()

A.编译不通过 B. 编译通过,运行时异常

C. 编译运行都正常,输出 3 D. 编译运行都正常,输出 4

5:(Set)仔细阅读以下代码,将不正确的代地方进行改正。

hashCode里面的salary 前面加强转(int)

 Equals 里面

Public boolean equals (Object o){

     If(this == o) return true;

     If(this.getClass != o.getClass || o == null) return false;

Worker w = (Worker)o;

     return name.equals(o.Name) && salary == w.salary && age ==w.age;

}

将第三个add的0删掉,set的集合不能用下标赋值

6:(Set)编程:创建一个商品(Product)类,属性:商品名,商品单价,商品的数量,商品产地。

①创建多个商品对象,存储在 Set 集合中,集合中不能出现重复商品,商品名相同即为重复,在 Product 类中添加必要的方法;

②显示所有的商品信息;

③打印输出商品价格 > 1000 的所有商品信息;

④打印售空的商品的信息;

⑤打印输出商品产地为"北京"的商品信息;

⑥输入一个商品名,查询出此类商品的信息,如果不存在,则打印商品"商场无此商品!!!"

⑦输入一个价格段,查询出集合中所有在这个价格区间的所有商品信息。

public class Product {
    private String goosName;
    private double price;
    private int quantity;//数量
    private String area;

    public Product() {
    }

    public Product(String goosName, double price, int quantity, String area) {
        this.goosName = goosName;
        this.price = price;
        this.quantity = quantity;
        this.area = area;
    }

    public String getGoosName() {
        return goosName;
    }

    public void setGoosName(String goosName) {
        if(!this.goosName.equals(goosName)){
            this.goosName = goosName;
        }
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    @Override
    public String toString() {
        return "Produtor{" +
                "goosName='" + goosName + '\'' +
                ", price=" + price +
                ", quantity=" + quantity +
                ", area='" + area + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Product product = (Product) o;
        return goosName.equals(product.getGoosName());
    }

    @Override
    public int hashCode() {
        return goosName.hashCode();
    }
}
public class zy_6 {
    public static void main(String[] args) {

        Set<Product> set = new HashSet<>();
        set.add(new Product("小米",1000,100,"北京"));
        set.add(new Product("小米",2000,99,"beijing"));
        set.add(new Product("红米",3000,100,"杭州"));
        set.add(new Product("锤子",4000,0,"苏州"));

        set.forEach(p -> System.out.println(p));

        for (Product product : set) {
            if(product.getPrice()>1000){
                System.out.println(product);
            }
        }

        for (Product product : set) {
            if(product.getQuantity() ==0){
                System.out.println(product);
            }
        }

        for (Product product : set) {
            if(product.getArea().equals("北京")){
                System.out.println(product);
            }
        }

        Scanner sc = new Scanner(System.in);
        System.out.println("输入要查找的手机品牌");
        String name = sc.next();
        boolean flag = false;
        for (Product product : set) {
            if(product.getGoosName().equals(name)){
                System.out.println(product);
                flag = true;
            }
        }
        if(!flag){
            System.out.println("商场无此商品!!!");
        }



        System.out.println("7======================");
        System.out.println("输入要查找的价格区间例如:1000-2000");
        String price = sc.next();
        String[] split = price.split("-");
        int price1 = Integer.parseInt(split[0]);
        int price2 = Integer.parseInt(split[1]);
        boolean flag2 = false;
        for (Product product : set) {
            double d = product.getPrice();
            if(d > price1 && d<price2){
                System.out.println(product);
                flag2 = true;
            }
        }
        if(!flag2){
            System.out.println("商场没有这个区间的商品!!!");
        }

    }
}

7;(Set)编程:随机产生 10 个 0~50 之间的整数,存储在集合中,要求集合中的数据不能重复。知识补充: Random rd= new Random(); //Random 位于 java.util 包中

int n = rd.nextInt(n); //0~n -1之间的整数

public class zy_7 {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        Random r =  new Random();
        while (set.size()<50){
            int n = r.nextInt(50+1);
            set.add(n);
        }
        System.out.println(set.size());
    }
}

8;(Set)编程:键盘输入一个字符串,利用集合去除其重复字符,打印输出最终不同的字符。

package com.by.homework4;

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;

public class Test8 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入字符串");
        String str=sc.next();
        String []strs=str.split("");
        Set<String> set=new LinkedHashSet<>();

        for (int i = 0; i < strs.length; i++) {
            set.add(strs[i]);
        }
        set.forEach(s -> System.out.print(s));
    }
}

9:使用Set集合完成List练习题的最后一题

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

        Set<Student> set = new HashSet<>();


        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("输入学生信息,格式为:张三/18/男/99.5    输入:0退出");
            String s = sc.next();
            if(s.equals("0")){
                break;
            }
            String[] ss = s.split("/");
            Double score = ss[3].equals("null") ? null : Double.valueOf(ss[3]);
            set.add(new Student(ss[0],Integer.parseInt(ss[1]),ss[2],score));
        }


        System.out.println("1===================");
        for (Student s : set) {
            if(s.getScore() != null && s.getScore()>=80){
                System.out.println(s);
            }
        }

        System.out.println("2===================");
        for (Student s : set) {
            if(s.getScore() == null){
                System.out.println("没有参加考试的学生:"+s);
            }
        }

        System.out.println("5===================");
        Set<Student> set2 = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                if(o1.getScore()<o2.getScore()){
                    return 1;
                }else if(o1.getScore()>o2.getScore()){
                    return -1;
                }else {
                    return 0;
                }
            }
        });
        set2.addAll(set);
        for (Student student : set2) {
            System.out.println(student);
        }

    }
}

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

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

相关文章

九、HTML头部<head>

一、HTML头部<head> 1、<title>- 定义了HTML文档的标题 使用 <title> 标签定义HTML文档的标题 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>我的 HTML 的第一页</title> </head><b…

MySQL8.0安装(Linux - centos)

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 其他…

STM32F103GPIO工作模式及原理

目录 GPIO简介GPIO工作模式输入模式输出模式输出速度 GPIO框图和电路解析电路标识电路元件 GPIO工作模式电路解析浮空输入上拉输入下拉输入模拟输入开漏输出推挽输出推挽式复用功能开漏式复用功能 IO工作模式的选取输入模式输出模式 GPIO简介 GPIO&#xff0c;全称为通用输入输…

isaacgym(legged_gym)学习 (二)—— 设置环境地形

isaacgym(legged_gym)学习 &#xff08;二&#xff09;—— 设置环境地形 文章目录 isaacgym(legged_gym)学习 &#xff08;二&#xff09;—— 设置环境地形前言一、了解isaacgym中地形如何构成的二、自定义修改1.代码2.查看script/play.py 总结 前言 如何设置isaacgym中的环…

CISSP 第9章:安全脆弱性、威胁和对策

第九章 安全脆弱性、威胁和对策 9.1 评估和缓解安全脆弱性 9.1 硬件 处理器 执行类型 多任务处理&#xff1a; 同时处理两个或更多任务 多处理&#xff1a; 利用多个处理器完成一个应用程序的处理能力 多程序设计&#xff1a;通过操作系统对单个处理器上的两个任务进行协调&…

NPS 内网穿透安装

NPS 内网穿透安装 NPS分为服务端和客户端&#xff0c;对应的不同操作系统软件可以在GitHub RELEASES自行选择下载。 服务端搭建 由于个人非企业级使用&#xff0c;为了方便直接使用docker安装 1.docker运行 (注意需要提前下载conf文件&#xff0c;或者将镜像中文件copy出来…

.net 开源混淆器 ConfuserEx

官网&#xff1a;ConfuserEx 下载地址&#xff1a;Releases yck1509/ConfuserEx GitHub 使用参考&#xff1a;https://www.cnblogs.com/zhangzhi19861216/p/3937434.html

我是在一片骂声中成长起来的!!

曾几何&#xff0c;我的技术真的很烂&#xff0c;烂到技术主管每次都是点名要Review我的业务代码。 曾几何&#xff0c;我对技术沉淀没有一点自我意识&#xff0c;总是觉得临时抱一下佛脚就可以了。 曾几何&#xff0c;我也觉得技术无用&#xff0c;看看那些业务领导&#xf…

第5章 保护资产安全

5.1 对信息和资产进行识别和分类 数据安全生命周期管理是指数据保护始于数据被首次创建时&#xff0c;一直持续到该数据被销毁时。 实现生命周期保护的第一步是对信息和资产进行识别和分类。 组织常将分类定义纳入安全策略中。然后&#xff0c;人员根据安全策略要求适当地标记…

小黑迈出了应用开发第一步,通过武沛奇老师b站django入门课程了解了django,准备学习前端基础:django入门沛奇老师课程笔记

课程来源: https://www.bilibili.com/video/BV1NL41157ph/?p71&spm_id_from333.880.my_history.page.click 课程链接与学习资料推荐 django入门课程 https://www.bilibili.com/video/BV1NL41157ph/?p71&spm_id_from333.880.my_history.page.click django入门项目…

c语言-库函数qsort()初识

目录 前言一、qsort()的介绍及使用1.1 qsort()的介绍1.2 qsort()的使用1.2.1 使用qsort|()对整型数组按照升序排序1.2.2 使用qsort()对整型数组按照降序排序1.2.3 使用qsort()对结构体数组数据进行排序 二、利用冒泡排序模拟实现对任何数据进行排序2.1 冒泡排序2.2 模仿qsort()…

BurpSuite信息收集篇

BurpSuite信息收集篇 1.填充目标站点地图2.使用 Burp Suite 自动发现内容3.使用 Burp Suite 枚举子域1.填充目标站点地图 演示站点 ginandjuice.shop 1、抓取目标的请求包 2、在不关闭浏览器的情况下,转到目标>站点地图。请注意,已自动添加一个节点来表示目标域 3、右键…

【EasyExcel】导出excel冻结表头和冻结指定列并支持筛选器

需求背景&#xff1a; 导出excel的同时冻结表头和前两列基础信息&#xff0c;方便导出后用户查看信息。 一、技术选型&#xff1a; easyExcel的自定义写策略处理&#xff1a;SheetWriteHandler 二、方案设计&#xff1a;&#xff08;基于实现 SheetWriteHandler 接口&#xf…

RabbitMQ(九)死信队列

目录 一、简介1.1 定义1.2 何时进入死信队列&#xff1f;1.3 死信消息的变化1.4 死信队列的应用场景1.5 死信消息的生命周期 二、代码实现2.1 死信队列的配置步骤2.2 配置类2.3 配置文件2.4 生产者2.5 业务消费者2.6 死信消费者2.7 测试结果 三、总结 RabbitMQ 是流行的开源消息…

【EI会议征稿通知】第三届城市规划与区域经济国际学术会议(UPRE 2024)

第三届城市规划与区域经济国际学术会议&#xff08;UPRE 2024&#xff09; 2024 3rd International Conference on Urban Planning and Regional Economy 第三届城市规划与区域经济国际学术会议&#xff08;UPRE 2024&#xff09;于2024年4月19-21日在泰国曼谷举行。会议旨在…

Qt/QML编程学习之心得:Linux下读写文件File(24)

在Linux嵌入式系统中,经常会使用Qt来读写一个文件,判断一个文件是否存在,具体如何实现呢? 首先,要使用linux系统中相关的头文件: #include <unistd.h> #include <stdio.h> #include <stdlib.h> 其次,判断路径是否存在, if(!dir.exists()){mkdir(…

智能驾驶打响“进阶战”:高、中、低阶赛道如何突围?

伴随智能驾驶普及进入新周期&#xff0c;高、中、低阶市场呈现不同的突围方式。 根据高工智能汽车研究院监测数据&#xff0c;2023年1-9月&#xff0c;中国市场&#xff08;不含进出口&#xff09;乘用车新车销售标配搭载L2&#xff08;含L2&#xff09;的渗透率达到36.31%&am…

QT常用控件使用及布局

QT常用控件使用及布局 文章目录 QT常用控件使用及布局1、创建带Ui的工程2、ui界面介绍1、界面设计区2、对象监视区3、对象监属性编辑区4、信号与槽5、布局器6、控件1、Layouts1、布局管理器2、布局的dome 2、Spacers3、Buttons4、项目视图组(Item Views)5、项目控件组(Item Wid…

【sgPasswordInput】自定义组件:带前端校验密码强度的密码输入框,能够提供密码强度颜色提示和文字提示

特性&#xff1a; 有密码强度颜色提示密码强度进度条提示支持设置默认输入提示和密码长度 sgPasswordInput源码 <template><div :class"$options.name" style"width: 100%"><el-inputstyle"width: 100%"ref"psw"type&…

软件使用手册

一简介 软件分两部分&#xff0c;股票监测程序&#xff0c;监测列表配置数据页面以及手机端接收监控数据。股票监测程序需要在电脑上运行。下载地址为程序下载地址。监控股票配置页面地址为动态列表。 二使用介绍 2.1监控客户端 2.1.1程序安装及登录 下载安装exe程序程序下载地…