Java Streams:按列表中不存在的值对列表进行分组会返回一个包含非退出值作为键并将原始列表作为值的映射?

Iho*_* M. 1 java java-stream

这可能是一个愚蠢的问题但是,我试图理解为什么以下代码:

public static void main(String[] args) {
    List<String> testData = Lists.newArrayList("a", "b", "c");
    Map<String, List<String>> grouped = testData.stream().collect(Collectors.groupingBy(item -> "z"));
    System.out.println(grouped);
}
Run Code Online (Sandbox Code Playgroud)

会返回一张地图:

{z=[a, b, c]}
Run Code Online (Sandbox Code Playgroud)

我正在尝试按列表中没有的值对列表进行分段.因此,我希望回到以下方面:

{z=[]}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,分类器函数并不那么简单,但简而言之,它可能会产生一个不在列表值之间的分类器值.

我在这里错过了什么?

Edd*_*Edd 5

Collectors.groupingByMap<Key,List<Item>>根据函数返回的Key将所有项目分组.
您将为所有项目返回相同的键"z",因此它们都会组合在一起.