我有两个 String 类型的 ArrayList ArrayList<String> xList
和ArrayList<String> yList
我想根据 someAttribute 将一个列表划分为多个存储桶(对于下面的示例,假设它使用 .contains()。
Map<String, List<String>> yBuckets = new HashMap<>();
yList.forEach(y -> yBuckets.compute(y.contains("I'm here"), (k,v) ->
(v == null ? new ArrayList<>() : v).add(y)));
但是我遇到了不兼容的类型错误(字符串无法转换为 boolean 值)。到目前为止,我从未真正使用过 Java 8,但它似乎对我想要的东西很有用,所以我想知道是否有人能够告诉我如何修复此代码。 谢谢
最佳答案
如果您想使用 lambda,您可以使用 toMap 收集器之一:
例如,按姓氏将名称列表分区到存储桶中:
List<String> names = Arrays.asList("Steve Ray", "Bobby Ray", "Billy Bob", "Timmy Bob");
Map<String, List<String>> nameBuckets = names.stream().collect(
Collectors.groupingBy(str -> {return str.split(" ")[1];}, Collectors.toList()));
关于java - 将 arraylist 划分为 Map 存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47359276/