阿昌教你使用谷歌guava工具包---集合包
阿昌 Java小菜鸡
# 阿昌教你使用谷歌guava工具包---集合包

前言

今天阿昌这里分享一个谷歌guava工具包,自己在工作业务中洋哥推荐的一个集合工具包的partition()方法,看了看这个工具包的方法并不是很多,主要常用也就是以下正文的3个方法

准备

走开始之前,我们肯定要先导入对于的Maven依赖

  • maven依赖
1
2
3
4
5
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.1-jre</version>
</dependency>
  • 涉及到的方法

image


正文

阿昌这里主要分享一些最常用的方法

  • partition—将集合分块处理

    • 简单演示

      1
      2
      3
      4
      5
      ArrayList<String> testList = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15");
      Lists.partition(testList,5).forEach(item->{
      System.out.println(item);
      System.out.println("=========");
      });

      image

    • 使用场景:可以去查询数据库的使用in的方式,来控制查询的次数

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      List<Long> groupSysSkuIdList = new ArrayList<>();
      List<Object> resultList = new ArrayList<>();
      //将集合拆分以200个为单位,每个会执行下面forEach的逻辑
      Lists.partition(groupSysSkuIdList,200).forEach(item->{
      Example example = new Example();
      //构造查询器,类比MybatisPlus的查询构造器
      example.createCriteria().
      //这里每次用拆分后的idList,用in的方式拆开查询
      .andGroupSysSkuIdIn(groupSysSkuIdList);
      //最后都加入到结果集合中
      resultList.addAll(xxxMapper.selectByExample(example));
      });

  • cartesianProduct—实现集合间笛卡尔积

    image

    • 演示

      1
      2
      3
      4
      5
      ArrayList<String> listA = Lists.newArrayList("1", "2");
      ArrayList<String> listB = Lists.newArrayList("3", "4");
      ArrayList<String> listC = Lists.newArrayList("5", "6");

      System.out.println(Lists.cartesianProduct(listA, listB,listC));

      image


  • reverse—将元素位置反转
1
2
3
ArrayList<String> oldList = Lists.newArrayList("1", "2", "3");
System.out.println(oldList);
System.out.println(Lists.reverse(oldList));

image


结尾

以上是这次分享记录的所有内容,感谢您能看到这里!!!

 请作者喝咖啡