【发布时间】:2019-02-14 12:40:44
【问题描述】:
我有一个 list1 包含不同的字符串,这些字符串以另一个列表 (fooBarList) 中的字符串开头。
List<String> list1 = Arrays.asList("FOO1234", "FOO1111", "BAR1", "BARRRRR");
List<String> fooBarList = Array.asList("FOO", "BAR");
我想创建一个Hashmap<String, List<String>> hm,它根据字符串的开头将字符串与 list1 分开。
结果应如下所示:
{FOO=["FOO1234",FOO1111"], BAR=["BAR1", "BARRRRR"]}
fooBarList 定义了不同的键。
如何在流的帮助下实现这一目标?我只是不知道如何执行我基本上说的步骤: FOO1234 以 FOO 开头,因此请检查键 FOO 是否存在并将其添加到列表中,否则创建一个新列表。 (我想我必须在流中迭代 fooBarList,这对我来说似乎是错误的)
/edit:确定 fooBarList 中只有 2 个值,我可以做简单的检查,如果字符串以“foo”开头,然后执行此操作。但是如果我的列表包含 100 个字符串呢?
【问题讨论】:
-
如果第二个列表同时包含“FOO”和“FOO1”怎么办。您如何决定为“FOO1234”选择哪个键?
-
这可以忽略,因为它不会发生。我有几个非常独特的键。
-
这些键是否都具有相同的长度(例如,在您的示例中为 3)?
-
不,长度可能因键而异。
标签: java java-8 java-stream