通过部分用户条目JAVA搜索数组列表

时间:2018-04-24 16:02:53

标签: java arraylist

我正在尝试使用JAVA程序通过用户输入搜索并打印ArrayList值。

用户将输入ID(字符串),我想打印ArrayList条目或包含输入ID的条目。 ArrayList中的所有ID都是全部大写,因此我在下面的代码中使用了.toUpperCase()。

我目前只通过ID的完全匹配使ArrayList可搜索。例如,如果ID是" HOUSE"用户只能输入完整的ID" house"获取返回的ArrayList值。

我想添加部分条目的功能以返回数组列表中的值。例如,如果两个ID是" HOUSE"和"休斯顿",我希望用户能够进入" hou"并返回包含" hou。"

的两个arraylist值

我是JAVA的新手,我在这里进行了相当多的研究,但我仍然无法在这里部分进入工作。我将不胜感激任何帮助。这是我为完整的ID条目放在一起的代码。

practice@practice-VirtualBox:~$ sudo service gitlab-runner status
● gitlab-runner.service - GitLab Runner
   Loaded: loaded (/etc/systemd/system/gitlab-runner.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-04-24 17:41:00 SAST; 3min 0s ago
 Main PID: 883 (gitlab-runner)
    Tasks: 9
   Memory: 24.6M
      CPU: 365ms
   CGroup: /system.slice/gitlab-runner.service
           └─883 /usr/bin/gitlab-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --u

1 个答案:

答案 0 :(得分:2)

使用String类中的startsWith方法。 所以,你可以这样做(不要在找到一个条目后打破循环,因为你想打印所有可能的匹配)

for (int i = 0; i < pl.size(); i++) {
    String id = pl.get(i).getId();

    if (id.startsWith(nameCaps)) {
        found = true;
        System.out.println(pl.get(i).toString());
    }
}

正如Aominè@的评论中提到的,你可以在这里使用for-each循环

for (Plant plant : pl) {
   if (plant.getId().startsWith(nameCaps)) {
   ...
  }
}