Guava集合工具使用示例

前言


在项目里面使用guava能够是我们的代码更优雅,美观,也更有效率;
guava的扩展集合类功能很强大,日常很多JDK无法实现的,没有的集合可以使用guava集合实现;

Guava集合示例


引入依赖
 <!--google 工具包 -->
 <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>19.0</version>
  </dependency>
1、集合创建并初始化
  • 可以创建的同时初始化。
  //创建集合
  List<Object> list = Lists.newArrayList();
  Set<Object> set = Sets.newHashSet();
  Map<Object, Object> map = Maps.newHashMap();

  //也可直接进行初始化
  List<Object> list = Lists.newArrayList("a", "b", "c", "d");
  
2、ImmutableList、ImmutableSet、ImmutableMap
  • ImmutableList:不可变、线程安全的列表集合。
  • ImmutableSet:不可变的集合、线程安全、元素不可重复。
  • ImmutableMap:不可变的map.
  • 创建不可变对象有两种方法,一种是使用静态of方法,一种是使用静态内部类Builder。
  @Test
    public void ImmutableTest(){
        //1、使用静态of方法创建
        ImmutableList<String> iList = ImmutableList.of("a", "b", "c");
        ImmutableSet<String> iSet = ImmutableSet.of("e1", "e2");
        ImmutableMap<String, String> iMap = ImmutableMap.of("k1", "v1", "k2", "v2");

        //2、使用静态内部类Builder创建
        ImmutableList<String> list = ImmutableList .<String>builder()
                .add("a")
                .add("b")
                .add("c")
                .build();

        Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>()
                .put("k1",o1)
                .put("k2",o2)
                .build();

    }
3、MultiMap
  • Multimap支持一键多值,项目中有时候需要用到,普通的map实现不了可以用Multimap存储接收。
@Test
    public void MultiMapTest(){
        Multimap<String, Integer> multimap = ArrayListMultimap.create();
        multimap.put("a", 1);
        multimap.put("a", 2);
        multimap.put("a", 3);
        multimap.put("b", 4);
        multimap.put("c", 5);

        System.out.println(multimap.keys());
        System.out.println(multimap);
        System.out.println(multimap.asMap());
    }

结果:

//第一个是获取map的键
//Multimap 可以一键存多值
[a x 3, b, c]
{a=[1, 2, 3], b=[4], c=[5]}
4、Table
  • Table是双键Map,两个key,一个value,相当于坐标,两个key可以确定唯一一个value,项目中有些是两个条件才能确定一个值的,可以用Table存储起来;
@Test
    public void TableTest(){
        Table<String, String, Integer> tables = HashBasedTable.create();
        tables.put("a", "aa", 1);
        tables.put("b", "bb", 2);
        tables.put("c", "cc", 3);

		//通过两个key获取值
        Integer integer = tables.get("b", "bb");

        System.out.println(tables);
        System.out.println(integer);
    }

结果:

{a={aa=1}, b={bb=2}, c={cc=3}}
2
5、BiMap
  • 双向Map, 键与值都不能重复;
 @Test
    public void BitMapTest(){
        BiMap<String, Integer> biMap = HashBiMap.create();
        biMap.put("a", 1);
        biMap.put("b", 2);
        biMap.put("c", 3);
        biMap.put("d", 1);

        System.out.println(biMap);
    }

键重复,新值替换旧值;值重复,报错:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值