部分搜索集合java

时间:2016-11-06 10:44:59

标签: java arraylist collections

我正在尝试用Java编写用于mp3类的代码。我希望能够完成对标题和艺术家的全部或部分搜索,它将显示在包含部分字符串的歌曲上。

这是我到目前为止编写的代码..如果用户输入完整的标题或完整的艺术家名称,它只能在测试人员中使用:

班级代码

public void searchByArtist(String artist){
        for(Song s : songs){
            if(s.getArtist().equalsIgnoreCase(artist)){
                System.out.println(s.toString());
            }
        }

  //search for a song by title  

    public void searchByTitle(String title){
        for(Song s : songs){
            if(s.getTitle().equalsIgnoreCase(title)){
                System.out.println(s.toString());
            }
        }
    }

测试人员代码

 case 4:
    keyIn.nextLine(); //clear the buffer of the previous option
        System.out.println();
             System.out.print("Please enter Title: ");
                   title = keyIn.nextLine();
                       player.searchByTitle(title);
                                break;

case 5:
keyIn.nextLine(); //clear the buffer of the previous option
System.out.println();
System.out.print("Please enter Artist: ");
artist = keyIn.nextLine();
player.searchByArtist(artist);
break;

1 个答案:

答案 0 :(得分:1)

要以不区分大小写的方式匹配部分,一种简单的方法是将equalsIgnoreCase替换为toLowerCase(),然后替换contains,例如:

String search = artist.toLowerCase();
for (Song s : songs) {
    if (s.getArtist().toLowerCase().contains(search)) {
        System.out.println(s.toString());
    }
}

请注意toLowerCase()是特定于语言环境的。如果标题不在默认语言环境中,请确保将相应的Locale指定为参数。