Java 如何在数组列表中搜索匹配的元素,然后使用这些元素创建一个列表
我的大学课程允许我在我创建的arraylist中搜索零件。我现在的目标是应用一个过滤器来搜索特定类型的部件,比如“cpu” 这就是我要做的,我输入一个单词,这个单词被发送到一个循环,这个循环检查列表中的任何元素是否有这个单词;如果有,它将把它添加到一个新的列表中并打印出来。然而,这只是打印一个空循环。我试着让它只适用于这种类型的项目,然后我会做的价格Java 如何在数组列表中搜索匹配的元素,然后使用这些元素创建一个列表,java,arrays,list,Java,Arrays,List,我的大学课程允许我在我创建的arraylist中搜索零件。我现在的目标是应用一个过滤器来搜索特定类型的部件,比如“cpu” 这就是我要做的,我输入一个单词,这个单词被发送到一个循环,这个循环检查列表中的任何元素是否有这个单词;如果有,它将把它添加到一个新的列表中并打印出来。然而,这只是打印一个空循环。我试着让它只适用于这种类型的项目,然后我会做的价格 private void filter(){ System.out.print("Enter type of part to view (
private void filter(){
System.out.print("Enter type of part to view ('all' for no filtering): ");
String filterPart = In.nextLine();
System.out.print("Enter minimum price ('-1' for no filtering): ");
double minPrice = In.nextDouble();
catalogue.LoopSearch(filterPart);
}
这里是LoopSearch方法
public Part LoopSearch(String filterPart){
List<Part> list2 = new ArrayList<Part>();
for (Part part : parts) {
if (part.hasName(filterPart)) {
list2.add(part);
}
System.out.print(list2);
}
return null;
}
以下代码可用于过滤元素:
List<Part> newParts = parts.stream()
.filter(p -> p.hasName(filterPart))
.collect(Collectors.toList());
我觉得你的逻辑很好。您的代码System.out.printlist2;位置不正确,也不是打印列表中项目的正确方法。您应该将打印逻辑置于return null;之前;。使用list2.forEachpart->System.out.printlnpart.getName。如果仍然不起作用,那么检查过滤器零件的外壳和零件名称是否相同。我认为这是一个很好的答案,但可能会为您给出的答案提供更多的上下文
List<Part> newParts = parts.stream()
.filter(p -> p.hasName(filterPart))
.collect(Collectors.toList());