Java 如何在ArrayList中检查一个字符串和一个条目的一个字符串属性(多个属性中的一个)的相等性?
我正在尝试以ArrayList的形式创建一个注册表,它将保存我读过的各种书籍。 该计划只有两个类。一个作为条目模板(名称:Entry),另一个管理ArrayList中的条目(名称:Registry) 以下是条目的属性:Java 如何在ArrayList中检查一个字符串和一个条目的一个字符串属性(多个属性中的一个)的相等性?,java,string,arraylist,Java,String,Arraylist,我正在尝试以ArrayList的形式创建一个注册表,它将保存我读过的各种书籍。 该计划只有两个类。一个作为条目模板(名称:Entry),另一个管理ArrayList中的条目(名称:Registry) 以下是条目的属性: private final String title; private final String mangaka; private final String year; private final String genre; private final String volume
private final String title;
private final String mangaka;
private final String year;
private final String genre;
private final String volumes;
private String completelyScanlated;
private String licensedInGerman;
private String read;
private String comments;
因此,这个构造器:
public Entry(final String title, final String mangaka, final String year, final String genre, final String volumes,
String completelyScanlated, String licencedInGerman, String read, String comment)
{
this.title = title;
this.mangaka = mangaka;
this.year = year;
this.genre = genre;
this.volumes = volumes;
this.completelyScanlated = completelyScanlated;
this.licensedInGerman = licensedInGerman;
this.read = read;
this.comments = comments;
}
“注册表”类只有一个属性:
ArrayList<Entry> entries = new ArrayList<Entry>();
现在我想检查一个字符串(它也是通过控制台输入创建的)是否等于属性“title”。我可以用“.contains()”方法检查输入是否相等,但此方法会比较所有属性。有没有办法只检查一个属性
以下是非工作代码:
public void findEntry()
{
Scanner input = new Scanner(System.in);
System.out.println("Which title do you want to search for?");
String searchedEntry = input.nextLine();
System.out.println();
if (entries.contains(searchedEntry)) {
int x = entries.indexOf(searchedEntry);
entries.get(x);
//Entry.showDetails();
}
}
结果将通过控制台发出(尽管代码正在工作)
提前感谢而不是
if (entries.contains(searchedEntry)) {
int x = entries.indexOf(searchedEntry);
entries.get(x);
//Entry.showDetails();
}
您可以遍历条目。大概是这样的:
for(Entry entry: entries) {
if(entry.getTitle().equals(searchedEntry)) {
// Do whatever it has to do.
}
}
如果标题不需要与案例匹配,您可以使用:
if(entry.getTitle().equalsIgnoreCase(searchedEntry))
我想你在入门课上有一个获得你的头衔的人。类似getTitle()的内容。然后遍历所有条目并检查其标题是否包含搜索字符串
public void findEntry(){
Scanner input = new Scanner(System.in);
System.out.println("Which title do you want to search for?");
String searchedEntry = input.nextLine();
System.out.println();
for(Entry entry : entries){
if(entry.getTitle().contains(input))
entry.showDetails(); // or Whatever
}
}
更好的做法是在之前将标题和搜索字符串转换为小写
if(entry.getTitle().toLowerCase().contains(input.toLowerCase()))
因此,您可以搜索“指环王”并找到“指环王:指环团契”。对于这种情况(非故意的双关语),您可以使用equalsIgnoreCase()方法。如下所示:if(entry.getTitle().equalsIgnoreCase(input))…对于equals,存在equalsIgnoreCase。但我认为在这个上下文中,contains更有意义,字符串中没有containsSignOreCase。对于我个人来说,contains更合适,因为这样我只需要键入一个序列——这样searchedEntry.toLowerCase()也只能用作关键字。在任何情况下,这两个版本都可以运行。对于任何想要查看结果的人:`public void findEntry(){Scanner input=new Scanner(System.In);System.out.println(“您要搜索哪个标题?”);String searchedEntry=input.nextLine();System.out.println();For(条目:entries){if(entry.getTitle().toLowerCase().contains(searchedEntry.toLowerCase()){entry.showDetails();}}`
if(entry.getTitle().toLowerCase().contains(input.toLowerCase()))