我有一个持有两个atrributes的东西:状态(一个枚举)和所有者(另一个对象).

我想获得一个Guava Table< owner,status,Long>通过遍历ArrayList并计算对象,如果某些状态不在List中,则计数为0,如下所示:

[owner1, status1, 2], [owner1, status2, 0], [owner2, status1, 3], [owner2, status2, 2]

在这种情况下如何使用.collect(Tables.toTable())?

解决方法:

下面的代码将创建一个包含计数的表,但没有零计数.

List listOfThings = ...;

Table table =

listOfThings.stream().collect(

Tables.toTable(

Thing::getOwner, // Row key extractor

Thing::getStatus, // Column key extractor

thing -> 1, // Value converter (a single value counts '1')

(count1, count2) -> count1 + count2, // Value merger (counts add up)

HashBasedTable::create // Table creator

)

);

要将缺少的单元格添加到表中(使用零值),您需要另外迭代所有可能的值(Status和Owner),并在没有值的情况下放置0值.请注意,如果所有者不是枚举,则没有简单的方法来获取所有可能的值.

或者,不是这样做,而是在从表中检索值时检查空值.

标签:java,guava

来源: https://codeday.me/bug/20190607/1194143.html

java guava table_java – 使用Guava的Tables.toTable相关推荐

  1. Java,Scala,Guava和Trove集合-它们可以容纳多少数据?

    关于我们的数据结构,令人着迷的事情之一是,即使我们对它们非常熟悉,我们仍然很难说出像HashMap这样基本的东西在1GB的内存中可以容纳多少个项目. 我们可能会在学校,高级开发人员那里学到这一点,或者 ...

  2. 【guava】 谷歌guava工具包的常用方法 双key的map 、驼峰转下划线等小结

    文章目录 1. maven引入 (某些框架会引入guava 注意版本冲突问题) 2. guava 对集合的处理 3. guava的 双键table (双key map) 4. guava的文件读写 代 ...

  3. 【Guava】Google Guava本地高效缓存

    1.Google,Guava本地高效缓存 Guva是google开源的一个公共java库,类似于Apache Commons,它提供了集合,反射,缓存,科学计算,xml,io等一些工具类库.cache ...

  4. 【Guava】使用Guava的RateLimiter做限流

    2019独角兽企业重金招聘Python工程师标准>>> 一.常见的限流算法 目前常用的限流算法有两个:漏桶算法和令牌桶算法. 1.漏桶算法 漏桶算法的原理比较简单,请求进入到漏桶中, ...

  5. java spring eventbus_spring集成guava的event bus

    Guava的event bus guava, https://github.com/google/guava 是一个非常有名的Java类库,提供了很多在日常开发中常用的集合.函数接口等.此外,guav ...

  6. java guava限流,Guava的RateLimiter实现接口限流

    最近开发需求中有需要对后台接口进行限流处理,整理了一下基本使用方法. 首先添加guava依赖: com.google.guava guava 23.0 然后封装RateLimiter适用对多接口的限制 ...

  7. java本地缓存 google guava

    本地缓存产生背景: 本地缓存是指在我们本地的物理空间开辟出一片物理空间,专门用来存储我们需要向服务器端频繁需要的数据, 比如前端页面需要频繁的向后台访问某些数据,这时候我们每次都去数据库查找数据再返回 ...

  8. java 笛卡尔积_使用Guava来计算笛卡尔积

    以前做项目的时候计算笛卡尔积的时候,总是使用各种for循环来嵌套,最后往往在Sonar代码检查的时候总是会报警说for循环嵌套过深. 今天才知道Guava原来已经为我们提供了优雅的计算笛卡尔积的方法. ...

  9. java guava cache_java使用guava cache实现本地缓存

    cache = CacheBuilder.newBuilder() .recordStats() .maximumSize(5000000) .expireAfterWrite(1, TimeUnit ...

最新文章

  1. 关于 app测试工具
  2. 网站html标签如何优化,网站HTML标签优化教程
  3. python及numpy,pandas易混淆的点
  4. python字符串最大长度_字符串String的最大长度
  5. SMM - 系统管理模式,SMRAM
  6. ubuntu全局配置文件
  7. python提取xml的所有框坐标_python 提取批量xml文件中的坐标信息存入txt文件 xml文件转txt文件...
  8. 集群tomcat+session共享
  9. 拓端tecdat|R语言中的隐马尔可夫HMM模型实例
  10. 用友U8 13.0运维及操作手册全版
  11. 批量word转pdf
  12. java 原子量_Java线程:原子量
  13. python写网络爬虫的环境搭建(windows完整版)
  14. Java Swing制作古老的打砖块游戏
  15. 计算机打字200字,学打字的作文200字
  16. Nginx源码分析之ngx_hash_t
  17. springboot使用rocketmq-spring-boot-starter整合RocketMQ
  18. Go 语言开发工具 LiteIDE X36 发布
  19. 美国研究生院计算机数据科学排名,美国研究生数据科学专业排名
  20. 致终将火爆的NFC——ISO14443 TypeA(一)

热门文章

  1. 用STM32自制APM四轴飞行器
  2. 也是这个道理的飞秋下载
  3. SolidWorks 2021 SP4.0 Full Premium Multilingual x64
  4. 江苏有限公司税收奖励政策,增值税、所得税返还地方留存部分60%-80%
  5. 醉汉漫步 Drunkard's walk
  6. 大数据价值变现的10种商业模式及利弊分析
  7. AI 资料及学习路线
  8. 光速不变问题新思考(光速不满足速度叠加原理)
  9. iphonex 序列号_iPhonex如何查看序列号 iPhonex序列号查看有哪些方法
  10. I/O学习---file类