Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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_List_Java 8_Java Stream - Fatal编程技术网

Java流的多重转换

Java流的多重转换,java,list,java-8,java-stream,Java,List,Java 8,Java Stream,我有一个字符串列表,我有定义的方法来转换列表中的每个元素,例如,将每个字符串转换为int,将“x”添加到int,并将int转换为字符串。我需要一个转换字符串的最终列表 我想使用Java流api来实现它 这是示例代码 private void test(){ List<String> mylist = new ArrayList<>(); mylist.add("1"); mylist.add("2"); mylist.add("3");

我有一个字符串列表,我有定义的方法来转换列表中的每个元素,例如,将每个字符串转换为int,将“x”添加到int,并将int转换为字符串。我需要一个转换字符串的最终列表

我想使用Java流api来实现它

这是示例代码

private void test(){
    List<String> mylist = new ArrayList<>();
    mylist.add("1");
    mylist.add("2");
    mylist.add("3");
    //need list of String like [11,12,13] after transforming each element through the below methods.


}

private int inttoString(String s){
    return Integer.parseInt(s);
}

private int addX(int st){
    return st+10;
}

private String convertToStr(int s){
    return Integer.toString(s);
}
private void test(){
List mylist=new ArrayList();
mylist.添加(“1”);
mylist.添加(“2”);
mylist.添加(“3”);
//通过以下方法转换每个元素后,需要类似于[11,12,13]的字符串列表。
}
私有int inttoString(字符串s){
返回整数.parseInt;
}
专用int地址(int st){
返回st+10;
}
私有字符串convertToStr(int-s){
返回整数.toString(s);
}

您可以对流应用任意多个
map
操作

e、 g

foo.stream()
   .map(functionA)
   .map(functionB)
   .map(functionC)
   .collect(Collectors.toList());
这些元素应用于基础流的相遇顺序中的元素。

您可以像这样使用多个元素:

List<String> result = mylist.stream()
        .map(s -> inttoString(s))
        .map(s -> addX(s))
        .map(s -> convertToStr(s))
        .collect(toList());
List result=mylist.stream()
.map->inttoString(s))
.map->addX(s))
.map->convertToStr(s))
.collect(toList());
或者在一张地图中:

List<String> result = mylist.stream()
        .map(s -> convertToStr( addX( inttoString(s) ) ))
        .collect(toList());
List result=mylist.stream()
.map->convertToStr(addX(inttoString)))
.collect(toList());
或者没有你的方法:

List<String> result = mylist.stream()
        .map(s -> String.valueOf(Integer.parseInt(s) + 10))
        .collect(toList());
List result=mylist.stream()
.map->String.valueOf(Integer.parseInt)+10)
.collect(toList());

您不需要使用这些方法来执行如此简单的操作。
Java 8流函数允许以简洁明了的方式实现这一点:

List<String> list = mylist.stream()
                          .mapToInt(Integer::parseInt)
                          .map(x -> x + 10)
                          .mapToObj(String::valueOf)
                          .collect(Collectors.toList());
List List=mylist.stream()
.mapToInt(整数::parseInt)
.map(x->x+10)
.mapToObj(字符串::valueOf)
.collect(Collectors.toList());

差别不大,但正在考虑另一个变量是-->
mylist.stream().mapToInt(Integer::parseInt).map(x->x+10).mapToObj(String::valueOf).collect(collector.toList())。好处是不执行装箱和取消装箱。@Aominè这是一个小小的更改,对于较大的列表是有效的。我想:)谢谢你的反馈:)另外,编辑
。mapToObj(Integer::toString)
也是有效的。因此,如果在方法引用中使用Integer.toString()语句,则该语句是不明确的。@AominèRight。当我修改一个“长”答案时,这往往是个问题。我必须检查所有内容以确保一致性。我每次都不执行的内容:)