我有这个流代码,它不编译:
itemList.stream() .map(im -> item2dogsMap.get(im.getEan())) .flatMap(List::stream) .forEach(d -> System.out.println("item" + im + " with dog " + d));
问题在于forEach
我需要的陈述im
和d
.但它无法解决im
这里.
我可以创建一个带有ItemAndDog
两个值的类,并在map
语句中执行一个新的操作.但这对我来说太过分了.有没有办法在不增加额外课程的情况下做到这一点?
您可以解决在您可以flatMap
访问这两个变量的位置内创建结果字符串的问题,如下所示:
itemList.stream() .flatMap(im -> item2dogsMap.get(im.getEan()).stream() .map(d -> "item" + im + " with dog " + d)) .forEach(System.out::println);