无法获取字符串流并将其作为参数传递给另一个返回int的方法

时间:2017-12-04 05:38:52

标签: java-8

public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}

我有一个public class JavaStreamMultIterator { public static void main(String[] args) { } private void iterateStringList() { List<String> stringList = Arrays.asList("one", "two", "three"); List<Integer> intList = new ArrayList<>(); intList = stringList .stream() .forEach(s - > {intForString(s)); .collect(Collectors.toList()); } private Integer intForString(String s) { switch (s) { case "one": return 1; case "two": return 2; case "three": return 3; default: return 15; } } } ,我想迭代这个列表,获取List<String>并将其作为参数传递给方法。

该方法会返回String,我想将其添加到Integer

List<Integer>

2 个答案:

答案 0 :(得分:3)

forEach是终端函数,它会消耗并且不会返回任何内容。 您需要从intForString()为您的列表生成值。

List<Integer> intList =
                stringList //your list
                .stream() //generate stream
                .map(this::intForString) //map them to integer 
                .collect(Collectors.toList());//collect all the integer toList()

答案 1 :(得分:2)

尝试使用map

stringList.stream()
            .map(s->intForString(s))
            .collect(Collectors.toList());