Google Guava 常用集合方法
/**
* Author: momo
* Date: 2018/6/7
* Description:
*/
public class ListTest {
public static void main(String[] args) {
/**List的常见用法*/
//构造list
List<Integer> list1 = Lists.newArrayList(1,2,3,4,5,6,7,8,9);
System.out.println(list1);
//反转list
List<Integer> reverseList1 = Lists.reverse(list1);
System.out.println(reverseList1);
//切割集合
List<List<Integer>> partition = Lists.partition(list1, 4);
partition.stream().forEach(list->System.out.println(list));
//拷贝为不可变集合
List list2 = new ArrayList();
list2.add(11);
list2.add(41);
list2.add(51);
list2.add(12);
ImmutableList immutableList = ImmutableList.copyOf(list2);
//创建不可变集合
ImmutableList<Integer> imList = ImmutableList.of(1, 2, 4, 12);
//获取不可变字符集合
ImmutableList<Character> asff = Lists.charactersOf("asff");
asff.stream().forEach(character -> System.out.println(character));
/**Map的常见用法*/
Map<String,Object> leftMap = ImmutableMap.of("name", "汪", "age", 18, "address", "陕西", "city", "西安","love","张");
Map<String,Object> rightMap = ImmutableMap.of("name", "张", "age", 16, "address", "陕西", "city", "西安","home","美国");
MapDifference<String, Object> deffMap = Maps.difference(leftMap, rightMap);
//相同的
Map<String, Object> map = deffMap.entriesInCommon();
System.out.println("相同的:"+map);
//同key不同value
Map<String, MapDifference.ValueDifference<Object>> stringValueDifferenceMap = deffMap.entriesDiffering();
System.out.println("同key不同value:"+stringValueDifferenceMap);
//仅仅左边有的
Map<String, Object> onlyLeft = deffMap.entriesOnlyOnLeft();
System.out.println("仅仅左边有的:"+onlyLeft);
//仅仅右边有的
Map<String, Object> onlyRight = deffMap.entriesOnlyOnRight();
System.out.println("仅仅右边有的:"+onlyRight);
/**BiMap*/
BiMap<Object, Object> biMap = HashBiMap.create();
biMap.put("张三",54);
biMap.put("李四",23);
biMap.put("程思",33);
biMap.put("吴楠",16);
//key相同value不同,后面的会覆盖前面的
biMap.put("吴楠",46);
//启动程序会报错 java.lang.IllegalArgumentException: value already present: 23
//biMap.put("张刚",23);
//强行添加,会覆盖
//biMap.forcePut("张刚",23);
System.out.println(biMap);
//反转 key和value反转
BiMap<Object, Object> inverseMap = biMap.inverse();
System.out.println(inverseMap);
}
}
结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4]
[5, 6, 7, 8]
[9]
a
s
f
f
相同的:{address=陕西, city=西安}
同key不同value:{name=(汪, 张), age=(18, 16)}
仅仅左边有的:{love=张}
仅仅右边有的:{home=美国}
{张三=54, 李四=23, 程思=33, 吴楠=46}
{54=张三, 23=李四, 33=程思, 46=吴楠}
初始化
Map<String, String> statusMap = ImmutableMap.<String, String>builder()
.put("1", "待签署")
.put("2", "签署中")
.put("3", "已签署")
.put("4", "已拒签")
.put("5", "已过期")
.put("6", "已撤销")
.put("7", "待填写")
.put("8", "填写中")
.build();
Google Guava 常用集合方法的更多相关文章
- guava常用集合交集,差集,并集,补集操作
<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <grou ...
- [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...
- [Google Guava] 2.1-不可变集合
范例 01 public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of( 02 "red&quo ...
- [Google Guava] 1.3-常见Object方法
原文链接 译者: 沈义扬 equals 当一个对象中的字段可以为null时,实现Object.equals方法会很痛苦,因为不得不分别对它们进行null检查.使用Objects.equal帮助你执行n ...
- 大数据学习day15----第三阶段----scala03--------1.函数(“_”的使用, 函数和方法的区别)2. 数组和集合常用的方法(迭代器,并行集合) 3. 深度理解函数 4 练习(用java实现类似Scala函数式编程的功能(不能使用Lambda表达式))
1. 函数 函数就是一个非常灵活的运算逻辑,可以灵活的将函数传入方法中,前提是方法中接收的是类型一致的函数类型 函数式编程的好处:想要做什么就调用相应的方法(fliter.map.groupBy.so ...
- (转)Android之常用功能方法大集合
这些,都是Andorid中比较常用的方法和功能,在网上搜集整理一下记录之,以备不时之需.由于经过多次转载,源文作者不确凿,在此申明,敬请见谅.不得不赞,非常实用. 1.判断sd卡是否存在 boolea ...
- 常用的方法,读取XML节点并赋值给List集合
一.前言 很多时候也可以直接在XML文件中配置好节点,在程序需要用到的时候,修改XML文件并不需要重新编译,这里是在极光推送中拿出来的一部分代码.代码简单,大家直接看例子吧. 二.实现过程 1.新创建 ...
- 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法
具体见第三阶段scala-day01中的文档(scala编程基础---基础语法) 1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...
- guava常用操作
Jack47 我思故我在 Google Java编程库Guava介绍 本系列想介绍下Java下开源的优秀编程库--Guava[ˈgwɑːvə].它包含了Google在Java项目中使用一些核心库,包含 ...
随机推荐
- 在k8s中收集jvm异常dump文件到OSS
现状 加参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/test.dump 可以实现在jvm发生内存错误后 会生成dump文件 方便开 ...
- 工程中实际问题解决两例——基于C#
工程中实际问题解决两例--基于C# 目录 工程中实际问题解决两例--基于C# 1. try catch的妙用 1.1 遇到问题的现象 1.2 原因分析 1.2.1 先从数据库入手 1.2.2 代码日志 ...
- [spojSUBLEX]Lexicographical Substring Search
建立后缀自动机,对于同一个节点,出现次数是相同的(right的大小),同时满足单调性(长度越长出现次数越少),所以只需要考虑最长的串即可. PS:似乎也并不需要求依次后缀的max,不知道为什么-- 1 ...
- UNCTF2020 web writeup
1.Easy_ssrf 给了file_get_contents,直接读取flag即可 2.Easyunserialize 利用点在 构造uname反序列化逃逸即可 3.Babyeval 两个过滤,绕过 ...
- CKAD认证中的部署教程
在上一章中,我们已经学会了使用 kubeadm 创建集群和加入新的节点,在本章中,将按照 CKAD 课程的方法重新部署一遍,实际上官方教程的内容不多,笔者写了两篇类似的部署方式,如果已经部署了 kub ...
- Sentry 监控 - Snuba 数据中台架构(SnQL 查询语言简介)
本文描述了 Snuba 查询语言 (SnQL). 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒 ...
- BehaviorTree.CPP行为树BT的选择节点(四)
Fallback 该节点家族在其他框架中被称为"选择器Selector"或"优先级Priority". 他们的目的是尝试不同的策略,直到找到可行的策略. 它们具 ...
- Apollo配置中心中的Namespace
前言:Apollo(阿波罗)是携程研发的开源配置管理中心,能够集中管理应用不同环境.不同集群的配置.同一环境统一集群的配置下有namespace概念,具体信息官方文档如下: namespace是配置项 ...
- R shinydashboard ——1. 基本用法
shiny和shinydashboard使用虽然简单,但控件众多,需及时总结归纳. install.packages("shinydashboard") shinydashboar ...
- R语言与医学统计图形-【10】ggplot2图形映射
ggplot2绘图系统--图形映射 颜色的映射. #aes中映射变量 ggplot()+geom_point(aes(x=carat,y=price,color='blue'),#color视为单一变 ...