Java 使用流api获取字符串

Java 使用流api获取字符串,java,java-8,java-stream,Java,Java 8,Java Stream,我有以下代码: private String categoryId; List<Category> categories = new List<>(); for(String category:categories){ if(category.getName().equals(categoryName)){ categoryId = category.getId(); break; } } 创建新类别时,类别Id是随机分配

我有以下代码:

private String categoryId;
List<Category> categories = new List<>();
for(String category:categories){
    if(category.getName().equals(categoryName)){
        categoryId = category.getId();
        break;
    }
}
创建新类别时,类别Id是随机分配的。 提前感谢。

尝试使用以下方法:

categoryId = categories.stream()
        .filter(category -> category.getName().equals(categoryName))//filter by name
        .map(Category::getId)  //get only the ids
        .findFirst()              //return just the first result
        .orElse(null);            //if no result then return null

如果要使用流,可以编写:

categories.stream().filter(c -> {
       if (c.getName().equals(categoryName)) categoryId = c.getId()});

这段代码甚至不编译。尝试并向我们提供您的实际代码,我们将能够根据您尝试的内容帮助您
categoryId=categories.stream().filter(category->category.getName().equals(categoryName)).map(category::getCatId.findFirst().orElse(null)@YCF\L您可以更改地图功能吗。它在我的电脑中不工作。请使其正常工作simpler@Krissh你是说
.map(category->category.getCatId())
@mallikarjun是的,我忘了用break
categories.stream().filter(c -> {
       if (c.getName().equals(categoryName)) categoryId = c.getId()});