使用流API获取字符串

时间:2018-07-18 09:38:00

标签: 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;
    }
}

我想在这里使用流api获取categoryId。我的类别类别如下。

class Category{ 

  private String name;
  private String id;
  // gettters and setters.

}
创建新类别时,会随机分配

类别ID。 预先感谢。

2 个答案:

答案 0 :(得分:4)

尝试使用此:

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

答案 1 :(得分:0)

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

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