首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >List to BiMap in Java8

List to BiMap in Java8
EN

Stack Overflow用户
提问于 2015-08-12 06:00:13
回答 1查看 3.7K关注 0票数 3

我有一个类型为:List<List<String>>的输入。

一个输入示例:

代码语言:javascript
复制
[A, A1Name]
[B, B1Name]

我想把它转换成BiMap

代码语言:javascript
复制
A -> A1Name
B -> B1Name

实现这一目标的最佳方法是什么:

目前我正在做的是:

代码语言:javascript
复制
final BiMap<String, String> myMap = HashBiMap.create();
lines.forEach(
    (tokens) -> {
        myMap.put(tokens.get(0), tokens.get(1));
    }
);
EN

回答 1

Stack Overflow用户

发布于 2015-08-12 10:16:04

由于BiMap实现了Map,因此可以使用toMap收集器。要复制循环的行为(重复键静默覆盖值,重复值抛出异常),您可以执行以下操作:

代码语言:javascript
复制
BiMap<String,String> m = lines.stream().collect(toMap(
    x->x.get(0), x->x.get(1), (a,b)->b, HashBiMap::create
));

另外,当您不确定如何将代码转换为流时,3参数collect提供了一种几乎逐字转换迭代代码的方法:

代码语言:javascript
复制
BiMap<String,String> m = lines.stream().collect(
        HashBiMap::create,
        (bm,t) -> bm.put(t.get(0), t.get(1)),
        BiMap::putAll
);
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31952709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档