千家信息网

压缩两个集合的方法有哪些

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章主要介绍"压缩两个集合的方法有哪些",在日常操作中,相信很多人在压缩两个集合的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"压缩两个集合的方法有哪些"
千家信息网最后更新 2024年11月30日压缩两个集合的方法有哪些

这篇文章主要介绍"压缩两个集合的方法有哪些",在日常操作中,相信很多人在压缩两个集合的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"压缩两个集合的方法有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

案例解释什么是压缩集合

现在有两个集合:names和ages

List names = new ArrayList<>(Arrays.asList("张三", "李四", "王五")); List ages = new ArrayList<>(Arrays.asList(24, 25, 27));

压缩完之后我们遍历压缩对象变成了下面这种形式:

张三:24  李四:25  王五:27

也就是name:age的键值对的形式,当然,如果我们的集合比较多,我们还可以压缩更多的集合。比如一个人的各种信息,id:name:age等等。

OK,知道了什么是压缩,下面不回长篇大论,直接给出压缩的几种形式,

压缩集合的几种方式

方式一:Java 8的IntStream

List names = new ArrayList<>(Arrays.asList("张三", "李四", "王五")); List ages = new ArrayList<>(Arrays.asList(24, 25, 27)); //方式一:java8的IntSream Stream stream = IntStream       .range(0, Math.min(names.size(), ages.size()))       .mapToObj(i -> names.get(i) + ":" + ages.get(i)); //遍历输出 stream.forEach(System.out::println);

这种方式比较简单,获取两个集合的流,然后转化为对象。java8可以直接使用。

方式二:Guava Streams

List names = new ArrayList<>(Arrays.asList("张三", "李四", "王五")); List ages = new ArrayList<>(Arrays.asList(24, 25, 27));  //方式二:guava //第一种 Streams.forEachPair(        Stream.of("张三", "李四", "王五"),        Stream.of(1, 2,3),        (name, age) -> System.out.println(name + ":" + age)); //第二种: Stream stream2 = Streams.zip(names.stream(), ages.stream(),          (name, age) -> name + ":" + age); stream2.forEach(System.out::println); //第三种: Stream stream3 = Streams.mapWithIndex(         Stream.of("a", "b", "c"),         (str, index) -> str + ":" + index); stream3.forEach(System.out::println);

以上是几种实现的方式,这位大佬给出了一种,我又去官网找了其他几种。另外使用guava的时候,版本要求21以上。我们在pom文件添加以下依赖即可:

     com.google.guava     guava     30.1-jre  

这里注意使用最新版的就可以。其他的也许会报错。我试了版本21的,也出错。

方式二:Using jOOλ (jOOL)

jOOL还在Java 8 Lambda上提供了一些有趣的新功能,并且通过对Tuple1到Tuple16的支持,zip操作变得更加有趣:

//方式三:jool //第一种 Seq> s1 = Seq.of("张三","李四", "王五")     .zip(Seq.of(24,25,27)); //第二种 Seq s2 = Seq.of(1, 2, 3)     .zip(Seq.of("a", "b", "c"), (x, y) -> x + ":" + y); //第三种 Seq> s3 = Seq.of("a", "b", "c").zipWithIndex(); s1.forEach(System.out::println); s2.forEach(System.out::println); s3.forEach(System.out::println);

Seq结果是一个压缩元组,我们可以看看。

(tuple(1, "a"), tuple(2, "b"), tuple(3, "c"))

这种方式也是需要添加依赖的。在pom文件添加如下依赖即可:

      org.jooq      jool-java-8      0.9.14 

ok,还有很多,基本思想都是切成流,再合并。这个直接用java实现也可以。

到此,关于"压缩两个集合的方法有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

方式 两个 张三 李四 王五 方法 学习 形式 更多 有趣 对象 文件 版本 帮助 实用 长篇大论 接下来 个人 也就是 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 兼职 香港软件开发 堡垒机访问服务器80端口下载 电子信息网络安全专业调剂 中国科技互联网公司收入 微信软件开发需要多久 服务器暂时无法登陆怎么办 网络安全人员的惩戒措施 查看所有的数据库mysql 三年不得从事网络安全管理 软件开发实验报告项目文档 文件存储服务器更换硬盘 数据库ltrim用法 eclipse连接服务器 软件开发实习了8个月周报 用什么软件开发操作系统 查询邮箱服务器 我的世界网易版服务器玩家定位器 加强网络安全的宣传教育 联通域名服务器地址 用友软件开发民办大专录用吗 java面试 数据库优化 ios录屏传递到服务器 指汇网络技术有限公司 海德服务器怎么安装系统 配置数据库错误怎么修复 数据库的备份和还原实验总结 浦东新区市场网络技术费用是多少 数据库怎么创建表的副本 视频会员扫号器 加数据库 多串口服务器哪家好
0