电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Java壓縮集合的三種方法

瀏覽:13日期:2022-08-18 13:30:34
前言

這個問題算是開發(fā)當(dāng)中偶爾會遇到的一個小問題,比如如何將兩個集合壓縮成為一個邏輯集合。

如果你不理解,我們可以看一個簡單的例子,去說明什么是壓縮集合。本文文章不長,但是還算是比較實用的小技巧。主要內(nèi)容來源于國外小哥Baeldung的博客:下面給出個地址

https://www.baeldung.com/java-collections-zip

這位大佬雖然寫的很詳細(xì),但是有一些細(xì)節(jié)小問題,我在此基礎(chǔ)之上,實地驗證了一遍,發(fā)現(xiàn)有幾個坑,不過已經(jīng)填完了。

案例解釋什么是壓縮集合

現(xiàn)在有兩個集合:names和ages

List<String> names = new ArrayList<>(Arrays.asList('張三', '李四', '王五'));List<Integer> ages = new ArrayList<>(Arrays.asList(24, 25, 27));

壓縮完之后我們遍歷壓縮對象變成了下面這種形式:

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

也就是name:age的鍵值對的形式,當(dāng)然,如果我們的集合比較多,我們還可以壓縮更多的集合。比如一個人的各種信息,id:name:age等等。

OK,知道了什么是壓縮,下面不回長篇大論,直接給出壓縮的幾種形式,

壓縮集合的幾種方式方式一:Java 8的IntStream

List<String> names = new ArrayList<>(Arrays.asList('張三', '李四', '王五'));List<Integer> ages = new ArrayList<>(Arrays.asList(24, 25, 27));//方式一:java8的IntSreamStream<String> stream = IntStream .range(0, Math.min(names.size(), ages.size())) .mapToObj(i -> names.get(i) + ':' + ages.get(i));//遍歷輸出stream.forEach(System.out::println);

這種方式比較簡單,獲取兩個集合的流,然后轉(zhuǎn)化為對象。java8可以直接使用。

方式二:Guava Streams

List<String> names = new ArrayList<>(Arrays.asList('張三', '李四', '王五'));List<Integer> 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<String> stream2 = Streams.zip(names.stream(), ages.stream(), (name, age) -> name + ':' + age);stream2.forEach(System.out::println);//第三種:Stream<String> stream3 = Streams.mapWithIndex(Stream.of('a', 'b', 'c'),(str, index) -> str + ':' + index);stream3.forEach(System.out::println);

以上是幾種實現(xiàn)的方式,這位大佬給出了一種,我又去官網(wǎng)找了其他幾種。另外使用guava的時候,版本要求21以上。我們在pom文件添加以下依賴即可:

<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1-jre</version> </dependency>

這里注意使用最新版的就可以。其他的也許會報錯。我試了版本21的,也出錯。

方式三:Using jOOλ (jOOL)

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

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

Seq結(jié)果是一個壓縮元組,我們可以看看。

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

這種方式也是需要添加依賴的。在pom文件添加如下依賴即可:

<dependency> <groupId>org.jooq</groupId> <artifactId>jool-java-8</artifactId> <version>0.9.14</version></dependency>

ok,還有很多,基本思想都是切成流,再合并。這個直接用java實現(xiàn)也可以。

結(jié)論

“zip”操作與標(biāo)準(zhǔn)的“concat”或“merge”稍有不同。“concat”或“merge”操作將簡單地在現(xiàn)有集合的末尾添加新集合,而“zip”操作將從每個集合中獲取一個元素并將它們組合起來。

以上就是Java壓縮集合的三種方法的詳細(xì)內(nèi)容,更多關(guān)于Java壓縮集合的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | RFID电子标签厂家-上海尼太普电子有限公司 | 猪I型/II型胶原-五克隆合剂-细胞冻存培养基-北京博蕾德科技发展有限公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 3D全息投影_地面互动投影_360度立体投影_水幕灯光秀 | 广东银虎 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 桌上式超净工作台-水平送风超净工作台-上海康路仪器设备有限公司 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 异噻唑啉酮-均三嗪-三丹油-1227-中北杀菌剂厂家 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 凝胶成像仪,化学发光凝胶成像系统,凝胶成像分析系统-上海培清科技有限公司 | 新密高铝耐火砖,轻质保温砖价格,浇注料厂家直销-郑州荣盛窑炉耐火材料有限公司 | 24位ADC|8位MCU-芯易德科技有限公司 | 厂厂乐-汇聚海量采购信息的B2B微营销平台-厂厂乐官网 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | LHH药品稳定性试验箱-BPS系列恒温恒湿箱-意大利超低温冰箱-上海一恒科学仪器有限公司 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 懂研帝_专业SCI论文润色机构_SCI投稿发表服务公司 | 起好名字_取个好名字_好名网免费取好名在线打分 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 西安展台设计搭建_西安活动策划公司_西安会议会场布置_西安展厅设计西安旭阳展览展示 | 球盟会·(中国)官方网站| 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 双效节能浓缩器-热回流提取浓缩机组-温州市利宏机械 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 合肥花魁情感婚姻咨询中心_挽回爱情_修复婚姻_恋爱指南 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 磁力抛光机_磁力研磨机_磁力去毛刺机_精密五金零件抛光设备厂家-冠古科技 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 广州企亚 - 数码直喷、白墨印花、源头厂家、透气无手感方案服务商! | 电液推杆生产厂家|电动推杆|液压推杆-扬州唯升机械有限公司 |