Guava学习(八):集合帮助类

拥抱Guava之集合操作 深入了解Google Guava库的集合操作功能,本文介绍了其强大的特性,包括不可变集合和高效工具类。通过实例演示,为Java开发者提供全面的集合操作解决方案 阅读详情

guava中的集合帮助类主要有:Collections2,Lists,Sets,Maps,Ints,Strings等基本集合类型对应的帮助类及guava的新集合类型对应的帮助类,类名基本是对应类后面加个s。
其中Lists,Sets的生产集合的方法可以再创建的时候就传入元素,使用很方便,Sets可以对对两个Set求交集、并集、差集,在某些场景下很有用,其他很多方法有兴趣可以看看。
在这里插入图片描述

使用例子:

package com.bluedragon.guavalearning.collectiontool;

import com.google.common.collect.*;
import com.google.common.primitives.Ints;

import java.util.*;

/**
 * @author CodeRush
 * @date 2019/8/7 0:02
 */
public class CollectionToolTest {

    public static void main(String[] args) {
        /*
         * Coolection2
         */
        ArrayList<Integer> integers = Lists.newArrayList(10, 2, 5, 7, 11, 6, 3, 2, 8, 1, 0);
        Collection<List<Integer>> permutations = Collections2.permutations(integers);
        System.out.println(permutations);
        Collection<List<Integer>> orderedPermutations = Collections2.orderedPermutations(integers);
        System.out.println(orderedPermutations);
        //转换 转换成其他类型的集合
        Collection<Double> transform = Collections2.transform(integers, Integer::doubleValue);
        System.out.println(transform);
        //java8后这个作用不大
        Collection<Integer> filter = Collections2.filter(integers, input -> input < 9);
        System.out.println(filter);

        //把一个字符串分割成字符List
        ImmutableList<Character> characters = Lists.charactersOf("hello world");
        System.out.println(characters);
        //反转元素顺序
        List<Character> reverseCharacters = Lists.reverse(characters);
        System.out.println(reverseCharacters);
        List<Integer> integers1 = Lists.asList(1, new Integer[]{5, 4, 3});
        System.out.println(integers1);
        List<String> transform1 = Lists.transform(reverseCharacters, c -> c + c.toString());
        System.out.println(transform1);
        //更加语义化的方法
        ArrayList<Object> objects = Lists.newArrayListWithCapacity(5);
        List<List<String>> partition = Lists.partition(transform1, 3);
        System.out.println(partition); //[[dd, ll, rr], [oo, ww,   ], [oo, ll, ll], [ee, hh]

        HashSet<Integer> set1 = Sets.newHashSet(1, 3, 5, 3, 7, 9, 6, 8);
        HashSet<Integer> set2 = Sets.newHashSet(2, 4, 6, 8, 10);
        Set<List<Integer>> cartesianProduct = Sets.cartesianProduct(set1);
        System.out.println(cartesianProduct);
        //交集
        Sets.SetView<Integer> intersection = Sets.intersection(set1, set2);
        System.out.println(intersection);
        //并集
        Sets.SetView<Integer> union = Sets.union(set1, set2);
        System.out.println(union);
        //差集
        Sets.SetView<Integer> difference = Sets.difference(set1, set2);
        System.out.println(difference);
        HashMap<String, Boolean> map = Maps.newHashMap();
        Set<String> setFromMap = Sets.newSetFromMap(map);
        setFromMap.add("aa");
        setFromMap.add("bb");
        setFromMap.add("cc");
        System.out.println(setFromMap);
        System.out.println(map);

        int[] ints = Ints.toArray(integers);
        System.out.println(Ints.contains(ints, 3));
        String join = Ints.join("-", ints);
        System.out.println(join);
        System.out.println(Ints.max(ints));
        System.out.println(Ints.min(ints));

        //根据Iterable子类及一个函数转换成ImmutableMap
        ImmutableMap<Integer, String> integerStringImmutableMap = Maps.toMap(set1, input -> "value" + input);
        System.out.println(integerStringImmutableMap);
    }
}

输出结果:

permutations([10, 2, 5, 7, 11, 6, 3, 2, 8, 1, 0])
orderedPermutationCollection([0, 1, 2, 2, 3, 5, 6, 7, 8, 10, 11])
[10.0, 2.0, 5.0, 7.0, 11.0, 6.0, 3.0, 2.0, 8.0, 1.0, 0.0]
[2, 5, 7, 6, 3, 2, 8, 1, 0]
[h, e, l, l, o,  , w, o, r, l, d]
[d, l, r, o, w,  , o, l, l, e, h]
[1, 5, 4, 3]
[dd, ll, rr, oo, ww,   , oo, ll, ll, ee, hh]
[[dd, ll, rr], [oo, ww,   ], [oo, ll, ll], [ee, hh]]
[[1], [3], [5], [6], [7], [8], [9]]
[6, 8]
[1, 3, 5, 6, 7, 8, 9, 2, 10, 4]
[1, 3, 5, 7, 9]
[aa, bb, cc]
{aa=true, bb=true, cc=true}
true
10-2-5-7-11-6-3-2-8-1-0
11
0
{1=value1, 3=value3, 5=value5, 6=value6, 7=value7, 8=value8, 9=value9}
JAVA集合和guava集合使用和原理解析 一:总体介绍: Java集合框架介绍 集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。 Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。 其中L... 阅读详情

相关推荐

Unity集成阿里云语音AI:从麦克风录音到实时语音合成的全流程实现

本文详细介绍了在Unity中集成阿里云语音AI服务,实现从麦克风录音到实时语音合成的完整流程。通过调用阿里云的语音转文字和文字转语音接口,开发者可以快速为游戏或应用添加语音交互功能,提升用户体验。文章涵盖了环境配置、签名认证、音频处理及项目集成等核心步骤,并提供了实用的调试技巧。

weixin_29224589的博客 323

集合帮助类CollectionUtil

import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.beanutils.Proper...

li_jiazhi的博客 1209

离散数学 --- 图论基础 --- 图的同构,通路与回路,可达性与最短通路

同一个图(这里的图是抽象的数学定义)可以有不同的图形表示方法1.重数:两点之间的平行边的个数1.得到 n!的过程,一个图中的一个结点在另一个图中对应的结点有n种可能(黄框中定义的图来讨论),这个对应好后下一个结点有 n - 1 种可能,再下一个有n-2种,直到最后一个为1,所有可能的结果就等于 n * (n - 1) *(n - 2)*....*1 = n!2.虽然说找对应结点很困难,但不是没有规律可循的。比如1.两个相互对应的结点的度数要相同;

qq_51947882的博客 7440

Guava-Collections2源码解析

Guava-Collections2类的源码解析

dancheng1的博客 518

如何适配自定义激光雷达数据到LIO-SAM:解决ring和time参数缺失问题

本文详细解析了如何将非标准激光雷达(如速腾、Livox)适配到LIO-SAM框架中,重点解决ring和time参数缺失问题。提供了从源码修改到通用适配中间件的多层级解决方案,并包含实机测试与性能调优指南,帮助开发者高效完成雷达数据适配。

weixin_42551227的博客 421

Android逆向分析

Android 逆向开发是指对已发布的 Android 应用进行分析和破解,以了解应用程序的内部工作原理,获取应用程序的敏感信息,或者修改应用程序的行为。Android应用 Java编写的,利用Android SDK编译代码,并并且把所有的数据和资源文件打包成一个APK(Android Package)文件这是一个后缀名为.apk的压缩文件,apk文件中包含了一个Anddroid应用程序的所有内容,是Android平台用于安装应用程序的文件。

qq_51598534的博客 6293

java guava使用之Collections2

package com.xasmall.guava;import java.util.Collection; import java.util.Collections; import java.util.List;import com.google.common.base.Function; import com.google.common.base.Predicate; import com.go

lxasmall_white的博客 2835

汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发

为了兼容这部分手机,车机端在向手机端发送USB控制命令字的同时,需要启动mDNS Server,广播车机端IP地址和HiCar SDK侦听的Server Socket端口(IP地址和端口在HiCar SDK初始化USB driver时,告知车机),在检测到手机断开USB连接时关闭mDNS Server。厂商在集成HiCar SDK开发HMI应用时,不可避免会使用到智能座舱的敏感权限,例如位置权限、摄像头权限、麦克风权限等,SDK初始化时,厂商HMI应用需要设置必要的车机参数供SDK使用。

码农17年的博客 1075

掌握Guava集合工具:简化复杂集合操作,让代码更优雅

无论你是初级开发者还是经验丰富的Java工程师,掌握Guava类库的集合工具将成为你代码中的一把利剑。在这篇技术文章中,我们将深入探索Guava集合工具的使用方法、独特特点以及广泛的应用场景。通过学习如何优雅地处理Java集合,你将能够提升代码的可读性、简化复杂的集合操作,并在性能方面获得巨大的提升。无论你是想要解决数据结构问题,还是寻求更高效的代码实现方式,本文都将为你提供宝贵的指导和实用技巧。不容错过的一篇文章,让我们一起探索Guava集合工具的奇妙世界!

凡夫编程 1754

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

w0shishabi的博客 1777

用 SemanticObject 把字段变成可点击链接:Fiori Elements Navigation Using a Link 的工程化实践

SAP Fiori elements 通过 Common.SemanticObject 注解可将字段转为可点击链接,实现应用间跳转。当源字段名与目标属性名不一致时,需使用 Common.SemanticObjectMapping 进行映射。该功能依赖 Fiori Launchpad 的目标映射配置,确保正确解析 semantic object + action 并传递参数。常见误区包括未配置目标映射或字段映射错误,需逐一检查语义标注、intent 解析和参数传递链路。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 272

Guava中关于字符串处理以及加强版集合的使用记录(个人学习笔记)

Guava中关于字符串的处理 Strings工具类的使用 // 获取共同的前缀 String commonPrefix = Strings.commonPrefix(&quot;fenglang&quot;, &quot;fengyue&quot;); System.out.println(commonPrefix); // 获取共同的后缀 String commonSuffix = Strings.commonSuffi...

冯朗的博客 3150

ISMN数据处理

可批量下载,十分方便

m0_46268055的博客 1216

Guava的基础功能与集合

Guava中的基础功能和集合

hefrankeleyn的博客 9035

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Guava学习之Immutable集合

Immutable中文意思就是不可变。那为什么需要构建一个不可变的对象?原因有以下几点:在并发程序中,使用Immutable既保证线程安全性,也大大增强了并发时的效率(跟并发锁方式相比)。尤其当一个对象是值对象时,更应该考虑采用Immutable方式;被不可信的类库使用时会很安全;如果一个对象不需要支持修改操作(mutation),将会节省空间和时间的开销;经过分析,所有不可变的集合实现都比可变集

过往记忆大数据 7992

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Guava系列之新的集合类型

Guava中新增加了一些集合类型,是对JDK集合类型的补充,使开发者更方便使用集合类型来实现业务功能 Multiset 首先我们来看一下日常研发中常用到的一个场景,统计一个list中每个元素出现的次数,我们大概会这样写: List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("b"); list.add("b.

果子爸聊技术 3953

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【Guava】集合工具类-Immutable&Lists&Maps&Sets

如《Effective Java》Item1)所述,在设计类的时候,倾向优先使用静态工厂方法(static factory method)而非构造函数(constructor)创建对象,优点在于:同样,如《Effective Java》Item17所述,需要最小化可变性,遵循了最佳实践。首先,不可以通过构造函数实例化,更准确地说,不可以在外部通过构造函数实例化。而在程序设计中使用不可变对象,也可以提高代码的可靠性和可维护性,其优势包括:创建对象的不可变拷贝是一项很好的防御性编程技巧。Guava为所有JDK标

SevenCoding的博客 1260

Guava 集合类

转载自:老司机阿粉带你玩转 Guava 集合类 1. Guava 介绍 Guava 是一款 Google 开源工具类,包含许多 Google 内部Java项目依赖的核心类。Guava 扩展 Java 基础类工程,比如集合,并发等,也增加一些其他强大功能,比如缓存,限流等功能。 另外 Guava 推出一些类,如Optional,甚至被 Java 开发者学习,后续增加到 JDK 中。 2.扩展集合类 Guava 创造很多 JDK 没有,但是我们日常却明显有用的新集合类型。这些新类型使用 JDK ...

折剑听雨落 1029

提升编程效率的利器: 解析Google Guava库之集合工具类-50个示例(八)

Guava库为Java的集合处理提供了一套全面且强大的工具类,极大地增强了Java集合框架的功能性和易用性。其中,Lists、Sets和Maps工具类简化了不可变集合的创建和常见操作,同时提供了集合转换、过滤、合并等高级功能。Iterables和Iterators工具类则扩展了迭代处理的能力,允许在迭代过程中进行流式处理,如元素转换和过滤。Ordering工具类引入了一个强大的比较器框架,支持自然排序、自定义排序和链式比较,为复杂排序需求提供了灵活解决方案。而EvictingQueue工具类实现了一种具有自

码到三十五 3235

Guava系列之不可变集合

Guava是一组来自谷歌的核心Java库,其中包括新的集合类型(比如multimap射和multiset)、不可变集合、并发、I/O、散列、缓存、字符串等的实用工具。它在谷歌中的大多数Java项目中被广泛使用,也被许多其他公司广泛使用 今天我们就来看一下Guava的不可变集合(Immutable Collections) 首先我们思考一个问题,什么是不可变,我们知道在Java里面String就是不可变的,为什么要设计不可变的类和集合呢? 你可以先想想这个问题,再继续往下看 什么是不可变对象? 对象创建.

果子爸聊技术 5445

Google Guava与集合操作相关的类

文章目录Collections集合1.不可变集合1.1示例1.2为什么使用1.3怎么用1.3.1`copyOf`比想象的更智能1.3.2`asList`1.4细节2.新集合类型2.1Multiset多重集合2.1.1Multiset不是Map2.1.2实现2.1.3SortedMultiset2.2Multimap多重映射2.2.1构造2.2.2修改2.2.3视图2.2.4Multimap不是Ma...

Life is for sharing的博客 1166

Guava--集合

文章目录1.不可变集合2.Guava集合2.1 Multiset2.2 Multimap2.3 BiMap2.4 Table2.5 RangeSet2.6 RangeMap 1.不可变集合  Guava为所有JDK标准集合类型和Guava新集合类型都提供了简单易用的不可变版本 优点: 当对象被不可信的库调用时,不可变形式是安全的; 不可变对象被多个线程调用时,不存在竞态条件问题 不可变集合不需要考虑变化,因此可以节省时间和空间。所有不可变的集合都比它们的可变形式有更好的内存利用率(分析和测试细节); 不可

一个巨大的博客 1615

Google guava学习

文章目录Google guava学习一、摘要二、优点三、maven依赖四、Guava API使用教程五、GuavaCache本地内存缓存六、布隆过滤器 Google guava学习 一、摘要 Guava是对JavaAPI的补充,对Java开发中常用功能进行更优雅的实现,使得编码更加轻松,代码容易理解。Guava使用了多种设计模式,同时经过了很多测试,得到了越来越多开发团队的青睐。Java最新版本...

开心就好 6524

Guava库学习:Guava的由来与Joiner类的学习使用

     链接地址:http://www.xx566.com/detail/121.html     Guava是什么?Guava的英文翻译是番石榴,源自于谷歌内部使用的“Google Collections”集合库,主要是为Java开发提供一些工具类,后来开源自成Guava项目,为什么叫Guava这么难听的名字,我也不清楚。为 什么要使用Guava,使用Java开发中,一些集合或字符串的处理...

喝拉菲的猫 528

Guava 操作 集合

Lists public static void main(String[] args) { //指定初始大小(数据多的话会自动扩容) ArrayList<String> list0 = Lists.newArrayListWithCapacity(4); System.out.println(list0); ArrayList<String> list1 = Lists.newArrayList(); //能够推断泛型 for(int i

哈 1256

Google Guava 集合(Collections)

       这一篇文章我们来讲Google Guava集合,这是Guava最成熟和为人所知的部分。里面给我们提供各个集合的工具类,也给我们提供了一些新的集合类。 一 不可变集合        不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变,一旦不可变集合创...

旧路 2129
上一篇: Guava学习(七):新的集合类型
下一篇: Guava学习(九):字符串处理
Blue Code
博客等级 码龄12年 3粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值