代码之家  ›  专栏  ›  技术社区  ›  vamsi

如何为以下代码编写java 8流代码?

  •  -2
  • vamsi  · 技术社区  · 6 年前
    List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");
    List<Integer> addList=new ArrayList<Integer>();
    
    for(String listobj:myList) {
        String appendedobj=listobj+"%";
        List<Integer> intlist=myMethod(appendedobj,listobj);
        addList.addAll(intlist);
    }
    
    
    public list<Integer> mymethod(appendedobj,listobj)
    {
        do something and retrurn list of integers;
    }
    

    我想将其转换为java 8 Stream 代码,但我不知道怎么打电话 myMethod 有两个参数。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Eran    6 年前

    您有一个循环,该循环为输入列表的每个元素生成要添加到输出循环的元素列表。 flatMap 在这种情况下可以使用。

    List<String> addList =
        myList.stream()
              .flatMap(listobj -> myMethod(listobj+"%",listobj).stream())
              .collect(Collectors.toList());
    

    编辑:我不确定输出的类型 List 以及 列表 返回人 mymethod() . 你是混血儿 List<String> 具有 List<Integer> 在代码中(不能返回 列表(<);字符串(>); 从…起 mymethod 并将其分配给 列表(<);整数(>); ).