Java中带有枚举和哈希集的Book类
需要创建一个具有以下功能的图书类:名称、作者、价格。图书的类型必须是枚举,并且我需要使用hashset添加一些图书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
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());
}