Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中带有枚举和哈希集的Book类_Java_Oop - Fatal编程技术网

Java中带有枚举和哈希集的Book类

Java中带有枚举和哈希集的Book类,java,oop,Java,Oop,需要创建一个具有以下功能的图书类:名称、作者、价格。图书的类型必须是枚举,并且我需要使用hashset添加一些图书 public class Book { enum Type { Classic_Literature, THRILLER, Psychology, MANUAL, Self_Improvement; } String name; String author; double price; p

需要创建一个具有以下功能的图书类:名称、作者、价格。图书的类型必须是枚举,并且我需要使用hashset添加一些图书

public class Book {

    enum Type {
        Classic_Literature, THRILLER, Psychology, MANUAL, Self_Improvement;
    }
        String name;
        String author;
        double price;


    public Book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;

      }

    public String get.name() {
   return name;

    }
}
公共类图书扩展图书{
公共图书(字符串名称、字符串作者、双倍价格){
超级(姓名、作者、价格);
}
公共静态void main(字符串[]args){
HashSet books=新HashSet();
carti.add(“Baltagul”);//古典文学
carti.add(“Morometii”);//古典文学
carti.添加(“区域个性化”);
补充条款(“刑事ABC”);
carti.add(“在mintea ta中”);
添加(“Abesedar”);
添加(“刺客信条启示”);
carti.添加(“在mintea lui中”);
添加(“Culegere Mate”);
加上(“公开演讲”);
}
}
这些书是罗马尼亚文的,所以别介意

我的问题是: -我怎样才能建立一个链接,这样我就可以打印出《古典文学》中的所有书籍


我不知道如何实现这种方法。

一些开始改进代码的想法

public class Book {

    enum Type {
        Classic_Literature, THRILLER, Psychology, MANUAL, Self_Improvement;
    }

    String name;
    String author;
    double price;
    Type type;

    public Book(String name) {
        this.name = name;
    }

    public Book(String name, Type type) {
        this.name = name;
        this.type = type;
    }

    public String getName() {
        return name;
    }
}   
publicstaticvoidmain(字符串[]args){
HashSet books=新HashSet();
books.add(新书(“Baltagul”,Book.Type.Classic_文学));//古典文学
books.add(新书(“Morometii”,Book.Type.Classic_文学));//古典文学
图书。添加(新书(“个性化”);
新增(新书(“犯罪ABC”);
图书。添加(新书(“mintea ta”);
//你在这里检索古典文学书籍
Set classicBooks=books.stream()
.filter(b->b.type==Book.type.Classic\u文献)
.collect(收集器.toSet());
}

对代码有一些误解。
1.将项目作为书本,不要在主目录中使用它。
那么,为什么会被定义? 也许这是必需的:
//图书目录

HashSet books=newhashset()

二,。为什么
书籍
应该扩展
书籍
? 这里不需要。
Books只是一个常规类,您可以通过
HashSet

3.基本
Book
实例化。 也许需要:
books.put(新书(“Poezii”,“Eminescu”,123))

.4.图书分类在哪里?
可能会改变构造器:
公共图书(字符串名称、字符串作者、双倍价格、BookType BookType)

然后进行适当的实例化
.5。在分类中显示图书。
只需在集合中使用常规循环,并仅验证特定的
图书类型(例如:经典文献)

...

在您向我们展示的代码中,我看不到任何地方定义了
carti
。另外,您在何处实际使用
类型
枚举?在你展示给我们的代码中,你只需要定义它。嗨,你展示的代码真的很混乱。“卡蒂”的定义在哪里?假设您要创建某种图书集合,遍历该集合,并为每个对象检查类型,您实际上似乎没有将其存储为图书类的属性。我真的建议你阅读你展示的甚至没有编译的代码。“carti”来自“books”。代码是用我的语言编写的,我忘了更改所有单词。还有几点:首先,为什么
books
是一组字符串?它不应该是一组
Book
对象吗?另外,为什么要将
图书
类扩展为
图书
?你从来没有实际实例化过
书籍
,即使你这样做了,也不会给
书籍
添加任何内容,所以这完全是多余的。为什么还要为初学者引入流呢?这只会把他们弄糊涂。@EJoshuaS-完全同意。这不是初学者代码。@EJoshuaS,为什么不呢?它很容易使用,我们在uni开始了OOP,教授给了我们一些练习。其中一些很常见,但这一个让我头疼。我不知道如何实现它。起初我认为我应该为book和enum创建一个构造函数,以便给出类似if(book.getType()==某物)的类型但我想溪流和lambda工作得更好,尽管我还没有使用它们。
public class Book {

    enum Type {
        Classic_Literature, THRILLER, Psychology, MANUAL, Self_Improvement;
    }

    String name;
    String author;
    double price;
    Type type;

    public Book(String name) {
        this.name = name;
    }

    public Book(String name, Type type) {
        this.name = name;
        this.type = type;
    }

    public String getName() {
        return name;
    }
}   
    public static void main(String[] args) {
        HashSet<Book> books = new HashSet<>();
        books.add(new Book("Baltagul", Book.Type.Classic_Literature));                //classical literature
        books.add(new Book("Morometii", Book.Type.Classic_Literature));               //classical literature
        books.add(new Book("Dezvoltarea personalitatii"));
        books.add(new Book("Criminalul ABC"));
        books.add(new Book("In mintea ta"));

        //here you retrieve the classical literature books

        Set<Book> classicBooks = books.stream()
                .filter(b -> b.type == Book.Type.Classic_Literature)
                .collect(Collectors.toSet());
    }