HashSet实例-增删查&遍历

HashSet实例-增删查&遍历

主要内容:HashSet的简单使用,HashSet的遍历的两种方式,以及可能出现的问题

  1. 问题描述

    HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时就是使用这个实现类。HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取和查找性能。本次挑战将模拟一个图书管理系统,对图书对象进行增加、删除、查询。

  2. 解题思路

    1. 定义图书类 Book,具有属性账号 id,书名 name、作者 author 和价格 price,在创建图书对象时要求通过构造器进行创建,一次性将四个属性全部赋值,要求账户属性是 int 型,名称是 String 型,作者是 String 型,价格是 double,请合理进行封装。

    2. 在 Book 类添加 toString 方法,要求返回图书信息字符串,使用制表符隔开各信息。

    3. 要求定义一个图书馆 Library 类,在图书馆类中添加一个 HashSet 集合用于保存多本图书。

    4. 在图书馆类中要求具有以下方法:addBook()deleteBook()selectBook() 。分别能够对图书进行增加、删除、查询。

    5. addBook() 方法的输入规则参照「测试验证」中的截图。

    6. deleteBook() 删除方法通过输入一个图书 id 进行删除指定图书,删除完成后输出“删除成功!”字样。

    7. selectBook() 通过输出所有图书对象的 toString() 方法输出图书信息。


      通过Iterator或者forEach(for(object e:HashSet))遍历

      HashSet its=new HashSet;

      Iterator it=its.iterator();

      while(its.hasNext()){

      ​ System.out.println(“it.next()”);

      }


      for(Student s:students){

      System.out.println(s.toSting());

      }

  3. 我的代码

    package org.lanqiao.entity;
    
    public class Book  {
        private int id;
        private String name;
        private String author;
        private double price;
    
        public Book(int id, String name, String author, double price) {
            this.id = id;
            this.name = name;
            this.author = author;
            this.price = price;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
        public double getPrice() {
            return price;
        }
    
        public void setPrice(double price) {
            this.price = price;
        }
        public String toString(){
            return "Book{ id="+id+",name="+
            name+",author="+author+",price="+price+"}";
        }
    }
    
    
    package org.lanqiao.main;
    
    import java.util.HashSet;
    import java.util.Scanner;
    
    import java.util.*;
    
    import org.lanqiao.entity.Book;
    
    public class Library {
        static HashSet<Book> books=new HashSet();
        static Scanner input=new Scanner(System.in);
        public static Boolean addBook(){
            System.out.println("请输入图书id:");
            int id=input.nextInt();
            System.out.println("请输入书名:");
            String name=input.next();
            System.out.println("请输入作者名:");
            String author=input.next();
            System.out.println("请输入价格:");
            double price=input.nextDouble();
            Book newBook=new Book(id,name,author,price);
            Boolean addFlag=books.add(newBook);
            if(addFlag){
                System.out.println("添加成功");
                return true;
            }else{
                return false;
            }
        }
        public static Boolean deleteBook(int id){
            Boolean removeFlag=false;
            for(Book bs:books){
                if(bs.getId()==id){
                    removeFlag=books.remove(bs);
                }
            }  
            if(removeFlag){
                System.out.println("删除成功");
                return true;
            }else{
                return false;
            }
        }
        public static Boolean deleteOneBook(){
            System.out.println("请输入要删除的图书的id:");
            int id=input.nextInt();
            return deleteBook(id);
        }
        public static void selectBook(){
                Iterator<Book> books2=books.iterator();
                while(books2.hasNext()){
                    System.out.println(books2.next().toString());
                }
            }
        public static void show(){
            System.out.println("------欢迎来到蓝桥图书馆------");
            System.out.println("1.添加图书");
            System.out.println("2.查询图书");
            System.out.println("3.删除图书");
            System.out.println("4.退出程序");
            int num=4;
            do{
                System.out.println("请输入选项");
                num=input.nextInt();
                switch(num){
                    case 1:addBook();break;
                    case 2:selectBook();break;
                    case 3:deleteOneBook();break;
                    case 4:System.out.println("退出成功");break;
                }
            }while(num!=4);
        }
        public static void main(String[] args) {
            show();
            
        }
    }
    
    
  4. 实验结果

图片描述

  1. 遇到的问题及解决办法

在使用Iterator的时候系统会默认导入一个包,但事实上需要修改为java.util…的包,直接import java.util.*;就OK了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值