我正在尝试转换 List<T>
至 Map<T, U>
使用 Java 8 但我一直卡在这一部分。我想要的是 map 的值是 U 类型的某个变量。让我们说这个例子 T
是 Person
对象和 U
是 String
.
list.stream().collect(Collectors.toMap(x -> x, ""));
但是,我在 x -> x
下不断收到以下错误:
no instance of type variable T,U exists so that String conforms to Function<? super T, ? extends U>
关于问题可能是什么的任何想法?
最佳答案
映射是键值对的集合。您提到您希望键是 Person
的实例,但是值呢?您希望这些值是什么?
如果你想让值是这个人的名字,那么你可以这样做:
list.stream().collect(Collectors.toMap(x -> x, Person::getName));
如果您只是希望所有的值都是 ""
(不过我认为这不是很有用),您仍然需要一个 lambda:
list.stream().collect(Collectors.toMap(x -> x, x -> ""));
看起来您可能只想要一堆唯一值,在这种情况下您可以使用 Collectors.toSet
:
list.stream().collect(Collectors.toSet());
或者只是distinct
:
list.stream().distinct().collect(Collectors.toList());
关于java - 使用 Java 8 将 List<T> 转换为 Map<T, U>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52510884/