Java 通过部分用户条目搜索数组列表
我试图用JAVA程序按用户条目搜索和打印ArrayList值 用户将输入一个ID(字符串),我想打印ArrayList条目或包含输入ID的条目。ArrayList中的所有ID都包含在所有大写字母中,因此我在下面的代码中使用了.toUpperCase() 我目前已经使ArrayList只能通过ID的完全匹配进行搜索。例如,如果ID为“HOUSE”,则用户只能输入完整的ID“HOUSE”,以获取返回的ArrayList值 我想添加partial entry的特性来返回数组列表中的值。例如,如果两个ID是“HOUSE”和“HOUSTON”,我希望用户能够输入“hou”,并获取返回的包含“hou”的两个arraylist值 我是JAVA新手,我已经在这里做了很多研究,但是我仍然无法在这里找到一个部分条目。我将感谢任何帮助。下面是我为完整的ID条目编写的代码Java 通过部分用户条目搜索数组列表,java,arraylist,Java,Arraylist,我试图用JAVA程序按用户条目搜索和打印ArrayList值 用户将输入一个ID(字符串),我想打印ArrayList条目或包含输入ID的条目。ArrayList中的所有ID都包含在所有大写字母中,因此我在下面的代码中使用了.toUpperCase() 我目前已经使ArrayList只能通过ID的完全匹配进行搜索。例如,如果ID为“HOUSE”,则用户只能输入完整的ID“HOUSE”,以获取返回的ArrayList值 我想添加partial entry的特性来返回数组列表中的值。例如,如果两个I
public void find(ArrayList<Plants> pl) {
boolean found = false;
int i = 0;
String inputName = null;
System.out.println("Enter the ID or partial ID of the plant you would like to find: ");
inputName = input.nextLine();
String nameCaps = inputName.toUpperCase();
while(!found && i < pl.size()) {
String id = pl.get(i).getId();
if (id.equals(nameCaps)) {
found = true;
System.out.println(pl.get(i).toString());
}
else {
i ++;
}
}
if (!found) {
System.out.println("A plant with that ID does not exist");
}
} // find end
public void find(ArrayList pl){
布尔值=false;
int i=0;
字符串inputName=null;
System.out.println(“输入要查找的设备的ID或部分ID:”);
inputName=input.nextLine();
字符串nameCaps=inputName.toUpperCase();
而(!found&&i
使用字符串类中的方法。
因此,您可以这样做(在找到一个条目后不中断循环,因为您希望打印所有可能的匹配项)
使用字符串类中的方法。
因此,您可以这样做(在找到一个条目后不中断循环,因为您希望打印所有可能的匹配项)
您可以使用增强的for循环。不明白为什么我们在这里需要for循环,因为您只使用索引来访问列表中的元素。@AominèYes。但我想让它尽可能接近OP迄今为止的尝试。您甚至可以使用Java8 streams来解决这个问题。。。当我需要访问元素并同时处理索引时,我通常使用for循环,如果我只对元素感兴趣,那么我通常使用增强的for循环。但我想这是一个偏好的问题。是的,这很有效!更简单的是,即使您最终输入了整个ID,我也不熟悉string类中的startswith方法。我会支持你的答案,但我没有15个代表:(不客气。。如果解决了问题,您仍然可以接受答案。您可以使用增强的for循环。不明白为什么我们需要在这里使用for循环,因为您只使用索引访问列表中的元素。@Aominè是的。但我想让它尽可能接近OP迄今为止所尝试的内容。您甚至可以使用Java 8 streams.fair eno解决此问题呃……当我需要访问元素并同时对索引做一些事情时,我通常使用for循环,如果我只对元素感兴趣,那么我通常会使用增强的for循环。但我想这是一个偏好问题。是的,这非常有效!更简单,即使你最终键入了整个ID。我我不熟悉string类中的startswith方法。我会支持你的答案,但我没有15个rep:(不客气..如果答案解决了你的问题,你仍然可以接受
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());
}
}
for (Plant plant : pl) {
if (plant.getId().startsWith(nameCaps)) {
...
}
}