我的问题是在removeDuplicates(C),为什么它不接受这种方式?此外,有人可以解释流如何工作?
List<String> countries = new ArrayList<String>() {
{
add("Indiaaaa");
add("Rommania");
add("UUUUK");
}
};
countries.stream()
.map(c -> removeDuplicates(c))
.forEach(n -> System.out.print(n + " "));
}
这是函数removeDuplicates:
public static void removeDuplicates(String s) {
char[] chars = s.toCharArray();
Set<Character> result = new LinkedHashSet<>();
for(Character c : chars) {
result.add(c);
}
result.forEach(n -> System.out.print(n));
}
答案 0 :(得分:0)
removeDuplicates
没有返回值。 void
的意思是什么。因此,您不能map
使用它。
你写的方式,最接近你认为的意思是
countries.stream().forEach(country -> {
removeDuplicates(country); // prints out the letters without duplicates
// doesn't actually modify country,
// or return the deduplicated characters
System.out.print(" ");
});
...虽然您也可以删除.stream()
,然后只需撰写countries.forEach(...)
。