Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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 如何在ArrayList中检查一个字符串和一个条目的一个字符串属性(多个属性中的一个)的相等性?_Java_String_Arraylist - Fatal编程技术网

Java 如何在ArrayList中检查一个字符串和一个条目的一个字符串属性(多个属性中的一个)的相等性?

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

我正在尝试以ArrayList的形式创建一个注册表,它将保存我读过的各种书籍。 该计划只有两个类。一个作为条目模板(名称:Entry),另一个管理ArrayList中的条目(名称:Registry)

以下是条目的属性:

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()))