JAVA:如何进入列表<;字符串>;
我用很少的值创建类书JAVA:如何进入列表<;字符串>;,java,string,list,Java,String,List,我用很少的值创建类书 private int id; private String title; private String autorName; private String autorSurname; private int date; private List<String> typeBook = Arrays.asList("autobiography", "classic", "comedy", "cookbook", "crime story",
private int id;
private String title;
private String autorName;
private String autorSurname;
private int date;
private List<String> typeBook = Arrays.asList("autobiography", "classic", "comedy", "cookbook",
"crime story", "drama", "encyclopedia", "fantasty", "novel");
我有个问题。如何进入列表,然后选择书的类型???似乎您对
类型书使用了错误的结构。一本书不能既是百科全书又是小说。它只是一种类型,从一组选择中选择。您需要的是:
根据DaveyDaveDave和Jack Flump的有用评论,您可能希望将一本书分为若干类别。为此,您可以在Book类中存储:
class Book {
...
private EnumSet<BookType> bookTypes;
...
}
这样称呼它:
Book tlotr = new Book(
12345,
"The Lord of the Rings",
"J.R.R.", "Tolkien",
1954,
BookType.CLASSIC, BookType.FANTASY, BookType.NOVEL);
如果要避免多次键入BookType.
,可以在文件顶部添加静态导入语句:
import static my_package.BookType.*;
然后,您可以仅按名称引用枚举常量。这仅在源位于命名包中时有效。此外,如果枚举位于类(如book)内,则导入静态mypackage.book.BookType.*代码>似乎您对打字机使用了错误的结构。一本书不能既是百科全书又是小说。它只是一种类型,从一组选择中选择。您需要的是:
根据DaveyDaveDave和Jack Flump的有用评论,您可能希望将一本书分为若干类别。为此,您可以在Book类中存储:
class Book {
...
private EnumSet<BookType> bookTypes;
...
}
这样称呼它:
Book tlotr = new Book(
12345,
"The Lord of the Rings",
"J.R.R.", "Tolkien",
1954,
BookType.CLASSIC, BookType.FANTASY, BookType.NOVEL);
如果要避免多次键入BookType.
,可以在文件顶部添加静态导入语句:
import static my_package.BookType.*;
然后,您可以仅按名称引用枚举常量。这仅在源位于命名包中时有效。此外,如果枚举位于类(如book)内,则导入静态mypackage.book.BookType.*
为typeBook创建getter:列出getTypeBook(){return typeBook;}
。然后使用它:…book.getTypeBook().get(index)
为typeBook创建getter:列出getTypeBook(){return typeBook;}
。然后使用它:…book.getTypeBook().get(index)
私有列表typeBook=array.asList(“自传”、“经典”、“喜剧”、“食谱”、“犯罪故事”、“戏剧”、“百科全书”、“幻想”、“小说”);
公共作废设置打印簿(列表打印簿){
this.typeBook=typeBook;
}
公共列表getTypeBook(){
把这本打字机还给我;
}
公共图书(int-id,String t,String-aName,String-aSurname,int-d,List-tBook){
this.id=id;
this.title=t;
this.autoname=aName;
this.autorname=aSurname;
这个日期=d;
这个.typeBook.addAll(tBook);
}
私人列表typeBook=array.asList(“自传”、“经典”、“喜剧”、“食谱”、“犯罪故事”、“戏剧”、“百科全书”、“幻想”、“小说”);
公共作废设置打印簿(列表打印簿){
this.typeBook=typeBook;
}
公共列表getTypeBook(){
把这本打字机还给我;
}
公共图书(int-id,String t,String-aName,String-aSurname,int-d,List-tBook){
this.id=id;
this.title=t;
this.autoname=aName;
this.autorname=aSurname;
这个日期=d;
这个.typeBook.addAll(tBook);
}
我会看看DodgyCodeException设置图书类型枚举的答案。我还将假设你正在试图得到一个按类型分类的书籍列表,因为你不完全清楚这个问题的意思
如果您试图获取书籍列表,则需要实现一个多值映射。举个例子:
Map<BookType, List<Book>> books = new HashMap<>();
books.computeIfAbsent(BookType.ENCYCLOPEDIA, () -> new ArrayList<Book>()).add(new Book(...));
Map books=newhashmap();
books.computeIfAbsent(BookType.ENCYCLOPEDIA,()->newArrayList()).add(新书(…);
填充此数据结构之后。你可以买到某种类型的书
List<Book> encyclopedias = books.get(BookType.ENCYCLOPEDIA);
List encyclopedias=books.get(BookType.ENCYCLOPEDIA);
我会看看DodgyCodeException设置图书类型枚举的答案。我还将假设你正在试图得到一个按类型分类的书籍列表,因为你不完全清楚这个问题的意思
如果您试图获取书籍列表,则需要实现一个多值映射。举个例子:
Map<BookType, List<Book>> books = new HashMap<>();
books.computeIfAbsent(BookType.ENCYCLOPEDIA, () -> new ArrayList<Book>()).add(new Book(...));
Map books=newhashmap();
books.computeIfAbsent(BookType.ENCYCLOPEDIA,()->newArrayList()).add(新书(…);
填充此数据结构之后。你可以买到某种类型的书
List<Book> encyclopedias = books.get(BookType.ENCYCLOPEDIA);
List encyclopedias=books.get(BookType.ENCYCLOPEDIA);
阅读关于Java getter/setter的文章……澄清一下——您在第一段代码(“自传”、“经典”等)中定义的列表,您是否希望它成为所有可能的图书类型的列表,然后在创建一本新的图书时
您希望选择一种(或多种?)这些类型中有哪些是那本书的类型?也许你误解了列表,我认为你应该使用枚举
,我的理解是,你只希望一组值被接受为书的类型?不确定最后一个问题的措辞是否正确。。。关于MultiValueMap
或Map
的提示当我创建图书时,我想设置一种类型的图书。阅读关于Java getter/setter的文章……澄清一下——你在第一个片段(“自传”、“经典”等)中定义的列表,你是否希望它成为所有可能图书类型的列表,然后,当你创建一本新的书时
你想选择其中一种(或多种?)类型作为该书的类型吗?也许你误解了列表,我认为你应该使用枚举
,我的理解是,你只希望一组值被接受为该书的类型?不确定最后一个问题的措辞是否正确。。。当我创建一本书时,我想设置一种类型的书。假设这是一个学习语言的项目,如果你想更进一步,给你的导师留下深刻印象,您可以增强enum以包含一些可以组合的图书类型的表示—例如,可能有小说
和幻想
,但可能没有百科全书
和喜剧
,然后提供一种方法来验证组合。T