我有一个类型为:List<List<String>>的输入。
一个输入示例:
[A, A1Name]
[B, B1Name]我想把它转换成BiMap
A -> A1Name
B -> B1Name实现这一目标的最佳方法是什么:
目前我正在做的是:
final BiMap<String, String> myMap = HashBiMap.create();
lines.forEach(
(tokens) -> {
myMap.put(tokens.get(0), tokens.get(1));
}
);发布于 2015-08-12 10:16:04
由于BiMap实现了Map,因此可以使用toMap收集器。要复制循环的行为(重复键静默覆盖值,重复值抛出异常),您可以执行以下操作:
BiMap<String,String> m = lines.stream().collect(toMap(
x->x.get(0), x->x.get(1), (a,b)->b, HashBiMap::create
));另外,当您不确定如何将代码转换为流时,3参数collect提供了一种几乎逐字转换迭代代码的方法:
BiMap<String,String> m = lines.stream().collect(
HashBiMap::create,
(bm,t) -> bm.put(t.get(0), t.get(1)),
BiMap::putAll
);https://stackoverflow.com/questions/31952709
复制相似问题