Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 如何在数组列表中搜索匹配的元素,然后使用这些元素创建一个列表_Java_Arrays_List - Fatal编程技术网

Java 如何在数组列表中搜索匹配的元素,然后使用这些元素创建一个列表

Java 如何在数组列表中搜索匹配的元素,然后使用这些元素创建一个列表,java,arrays,list,Java,Arrays,List,我的大学课程允许我在我创建的arraylist中搜索零件。我现在的目标是应用一个过滤器来搜索特定类型的部件,比如“cpu” 这就是我要做的,我输入一个单词,这个单词被发送到一个循环,这个循环检查列表中的任何元素是否有这个单词;如果有,它将把它添加到一个新的列表中并打印出来。然而,这只是打印一个空循环。我试着让它只适用于这种类型的项目,然后我会做的价格 private void filter(){ System.out.print("Enter type of part to view (

我的大学课程允许我在我创建的arraylist中搜索零件。我现在的目标是应用一个过滤器来搜索特定类型的部件,比如“cpu”

这就是我要做的,我输入一个单词,这个单词被发送到一个循环,这个循环检查列表中的任何元素是否有这个单词;如果有,它将把它添加到一个新的列表中并打印出来。然而,这只是打印一个空循环。我试着让它只适用于这种类型的项目,然后我会做的价格

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