java guava map_Guava - Map

创建Map

通常在创建map时使用new HashMap<>();的方法,guava提供了一个简洁的方法

Maps.newHashMap();

List转换Map

List list= new ArrayList<>();

//普通写法

Map map= Maps.newHashMap();

for(Solution a:list){

map.put(a.id,a);

}

//Maps.uniqueIndex(list, function);

//guava的写法,注意: 此时list中的元素的属性不能有重复的,如果有的话会报错

Map map2 =Maps.uniqueIndex(list, new Function() {

@Override

public Integer apply(Solution solution) {

return solution.id;

}

});

一个key对应多个value的Multimap

在编写代码的过程中经常会用到

Map> maps= new HashMap<>();

if(maps.get(1)==null){

List list= new ArrayList<>();

list.add("1");

maps.put(1,list);

}else{

maps.get(1).add("I");

}

Guava的写法

// ArrayListMultimap objectObjectArrayListMultimap = ArrayListMultimap.create();

HashMultimap objectObjectHashMultimap = HashMultimap.create();

//只需要put即可,不用判断是否为null情况

objectObjectHashMultimap.put(1,"1");

objectObjectHashMultimap.put(1,"2");

objectObjectHashMultimap.put(1,"3");

System.out.println(objectObjectHashMultimap.get(1));

ArrayListMultimap 返回的是一个List,HashMultimap返回的是一个Set

Multimap的实现

Implementation

Keys 的行为类似

Values的行为类似

ArrayListMultimap

HashMap

ArrayList

HashMultimap

HashMap

HashSet

LinkedListMultiap

LinkedHashMap

LinkedList

LinkedHashMultimap

LinkedHashMap

LinkedHashSet

TreeMultimap

TreeMap

TreeSet

ImmutableListMultimap

ImmutableMap

ImmutableList

ImmutableSetMultimap

ImmutableMap

ImmutableSet

通过key找value 也可通过value找key的Map-BiMap

BiMap也可以反向把值映射到键,只要确保值唯一。

BiMap biMap= HashBiMap.create();

biMap.put("I",1);

biMap.put("V",5);

biMap.put("X",10);

biMap.put("L",50);

biMap.put("C",100);

biMap.put("D",500);

biMap.put("M",1000);

/*HashBiMap.create(new HashMap(){{

put("I",1);

put("V",5);

put("X",10);

put("L",50);

put("C",100);

put("D",500);

put("M",1000);

}});*/

BiMap inverse = biMap.inverse();//翻转

System.out.println(inverse);//{1=I, 5=V, 10=X, 50=L, 100=C, 500=D, 1000=M}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值