Guava集合工具使用示例

前言


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

Guava集合示例


引入依赖
 
 <dependency>
      <groupId>com.google.guavagroupId>
      <artifactId>guavaartifactId>
      <version>19.0version>
  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);
    }

键重复,新值替换旧值;值重复,报错:
Guava集合工具使用示例_第1张图片

你可能感兴趣的:(JAVA,集合,java,spring,boot)