Eclipse系列的隐藏宝藏– 2019年版

Eclipse Collections是一个开放源代码Java Collections框架。 在此博客中,我将演示该框架的五个鲜为人知的功能。 我在去年的Java Advent Calendar中发布了一个类似的博客 。 请参阅博客末尾的资源以获取有关该框架的更多信息。

1. countBy() :当您要查找特定对象的计数时,可以使用countBy() API来获取Bag。 Bag的目的是维护对象到计数的映射。 袋可用于查询O(1)时间中的项目计数。 Bag还提供了其他有用的API,有助于计数。 在此博客中了解有关Bag数据结构的更多信息。

 @Test  public void countBy()  { MutableList<String> strings = Lists.mutable.with( "A" , "B" , "C" , "A" , "B" , "A" ); Bag<String> stringToCount = strings.countBy(each -> each); assertEquals( 3 , stringToCount.occurrencesOf( "A" )); assertEquals( 2 , stringToCount.occurrencesOf( "B" )); assertEquals( 1 , stringToCount.occurrencesOf( "C" )); assertEquals( 3 , stringToCount.sizeDistinct()); assertEquals( 6 , stringToCount.size());  } 

2. reject() :当您要选择不满足谓词的元素时,可以使用reject() API。 提供此API是为了增强可读性并使开发人员直观。 您可以使用reject()代替使用select()和取反布尔条件。 本质上,当使用reject()时,将选择所有对于布尔条件不返回true的元素。 reject(BooleanCondition)的输出与通过执行select(!someBooleanCondition)得到的输出相同。

 @Test  public void reject()  { MutableList<Integer> numbers = Lists.mutable.with( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ); MutableList<Integer> odds = numbers.reject(num -> num % 2 == 0 ); // reject pattern used to find odd numbers. // Notice there is no negation in the predicate. assertEquals(Lists.mutable.with( 1 , 3 , 5 , 7 , 9 ), odds); MutableList<Integer> oddsUsingSelect = numbers.select(num -> num % 2 != 0 ); assertEquals(odds, oddsUsingSelect);  } 

3. makeString() :当您想要RichIterable可配置字符串表示形式时,可以使用makeString() 。 如果使用不带分隔符的makeString() ,则使用默认的分隔符"comma space" ( ", " ) 。 如果需要特定的定界符,可以将其传递给makeString() ,输出字符串将具有字符串表示形式,其中每个元素都由定界符分隔。 如果Iterable的大小为1,则不使用定界符。

 @Test  public void makeString()  { MutableList<Integer> nums = Lists.mutable.with( 1 , 2 , 3 ); assertEquals( "[1, 2, 3]" , nums.toString()); // Notice the difference: toString() vs makeString(). // the ", " delimiter is used by default assertEquals( "1, 2, 3" , nums.makeString()); // Delimiter of choice can be passed assertEquals( "1;2;3" , nums.makeString( ";" )); MutableList<Integer> singleElement = Lists.mutable.with( 1 ); // Delimiter is not used for size = 1 assertEquals( "1" , singleElement.makeString()); assertEquals( "1" , singleElement.makeString( ";" ));  } 

4. zip() :要将两个OrderedIterable缝合在一起时,可以使用zip()zip() API在两个OrderedIterable上进行操作并将它们缝合在一起,以便您获得一Pair OrderedIterable 。 在Pair ,第一Pair是从第一元件OrderedIterable和第二Pair从第二元件OrderedIterable 。 如果OrderedIterable的大小不同, OrderedIterable忽略较长OrderedIterable中多余的元素。 zip()的输出是一个OrderedIterable ,其大小与较小的OrderedIterable相同。

 @Test  public void zip()  { MutableList<Integer> nums = Lists.mutable.with( 1 , 2 , 3 ); MutableList<String> strings = Lists.mutable.with( "A" , "B" , "C" ); assertEquals( Lists.mutable.with(Tuples.pair( 1 , "A" ), Tuples.pair( 2 , "B" ), Tuples.pair( 3 , "C" )), nums.zip(strings)); assertEquals( Lists.mutable.with(Tuples.pair( "A" , 1 ), Tuples.pair( "B" , 2 ), Tuples.pair( "C" , 3 )), strings.zip(nums)); MutableList<Integer> numsSmallerSize = Lists.mutable.with( 1 ); assertEquals( Lists.mutable.with(Tuples.pair( 1 , "A" )), numsSmallerSize.zip(strings)); assertEquals( Lists.mutable.with(Tuples.pair( "A" , 1 )), strings.zip(numsSmallerSize)); MutableList<String> stringsSmallerSize = Lists.mutable.with( "A" , "B" ); assertEquals( Lists.mutable.with(Tuples.pair( 1 , "A" ), Tuples.pair( 2 , "B" )), nums.zip(stringsSmallerSize)); assertEquals( Lists.mutable.with(Tuples.pair( "A" , 1 ), Tuples.pair( "B" , 2 )), stringsSmallerSize.zip(nums));  } 

5. OrderedIterable corresponds() :当您要根据Predicate查找两个OrderedIterable的所有元素是否相等时,可以使用corresponds() API。 的corresponds() API由第一检查操作如果两个OrderedIterable ■找相同的尺寸,如果它们具有那么相同的大小对应的两个元素OrderedIterable S使用的被评估Predicate传递给corresponds() 如果OrderedIterable s的大小相等,并且Predicate对所有元素返回true ,则corresponds() elements corresponds()返回true 。 如果OrderedIterable s的大小不相等,或者Predicate对任何元素返回false ,则corresponds()OrderedIterable corresponds()返回false

 @Test  public void corresponds()  { MutableList<Integer> lhs1 = Lists.mutable.with( 1 , 2 , 3 ); MutableList<Integer> rhs1 = Lists.mutable.with( 1 , 2 , 3 ); assertTrue(lhs1.corresponds(rhs1, Integer::equals)); MutableList<Integer> lhs2 = Lists.mutable.with( 1 , 2 , 3 ); MutableList<Integer> rhs2 = Lists.mutable.with( 2 , 4 , 6 ); assertTrue( lhs2.corresponds(rhs2, (lhs, rhs) -> rhs == 2 * lhs)); assertFalse( lhs2.corresponds(rhs2, (lhs, rhs) -> rhs == lhs * lhs)); assertFalse(lhs2.corresponds(rhs2, Integer::equals)); MutableList<Integer> lhs3 = Lists.mutable.with( 1 , 2 ); MutableList<Integer> rhs3 = Lists.mutable.with( 1 , 2 , 3 ); assertFalse(lhs3.corresponds(rhs3, Integer::equals));  } 

Eclipse Collections资源:
Eclipse Collections附带了List , Set和Map自己的实现。 它还具有其他数据结构,例如Multimap , Bag和整个Primitive Collections层次结构。 我们的每个集合都有一个流利且丰富的API,可用于通常需要的迭代模式。

  • 网站
  • GitHub上的源代码 ( 确保对存储库 加注 星标
  • 贡献指南
  • 参考指南
  • Eclipse Collections 2018版的隐藏宝藏

翻译自: https://www.javacodegeeks.com/2019/12/hidden-treasures-of-eclipse-collections-2019-edition.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css html 方格,使用CSS创建方格背景

这里是一个什么样的格仔背景看起来在图形设计编辑器&#xff0c;如Photoshop或Illustrator的翻版。 (所有的CSS).checkered{height: 240px;background: -webkit-linear-gradient(45deg, rgba(0, 0, 0, 0.0980392) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.0980…

java嵌套类与内部类

一、嵌套类(Nested Classes) 使用嵌套类减少了命名冲突&#xff0c;一个内部类可以定义在一个类中&#xff0c;一个方法中甚至一个表达式中。 (1)定义 A nested(嵌套) class is any class whose declaration occurs within the body of another class or interface. A top lev…

jsr303 spring_使用Spring和JSR 303进行方法参数验证

jsr303 springSpring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法。 在这篇文章中&#xff0c;我们将看到如何使用此功能。 建立 首先&#xff0c;我们需要通过创建MethodValidationPostProcessor bean添加对方法参数验证的支持&#xff1a; Configuration publi…

优先队列——斐波那契堆(without source code)

【0】README 0.1&#xff09; 本文部分内容转自 数据结构与算法分析&#xff0c;旨在理解 斐波那契堆 的基础知识&#xff1b; 0.2&#xff09; 文本旨在理清 斐波那契堆的 核心idea&#xff0c;还没有写出源代码实现&#xff0c;表遗憾&#xff1b; 0.3&#xff09;从实际角…

计算机专业考研可关注哪些公众号,考研应关注哪些公众号?

考研应关注哪些公众号&#xff1f;2018-11-30深夜睡不着&#xff0c;看到了这个问题&#xff0c;觉得我能帮上忙&#xff0c;就坐起来写了一份回答(^_^)微信公众号有&#xff1a;考研狗之家(特别推荐&#xff0c;各种资源)考研军火库(特别推荐&#xff0c;各种技巧)考研圈考研资…

cassandra 备份_使用sstableloader恢复Cassandra Priam备份

cassandra 备份我之前曾写过关于设置Cassandra和Priam进行备份和集群管理的文章。 但是&#xff0c;我在此处提供的用于备份还原的示例并不适用于所有情况&#xff0c;例如&#xff0c;它可能不适用于完全独立的群集。 或者在部分还原到一个表而不是整个数据库的情况下。 在这…

XML——XML概述

【0】README 0.1&#xff09;本文描述 转自 core java volume 2&#xff0c; 旨在理解 XML——XML概述 的基础知识&#xff1b; 【1】XML概述相关 1&#xff09;problemsolution &#xff08;干货——引入XML的原因&#xff09; 1.1&#xff09;problem&#xff1a;1.1.1&am…

java入门配置

一、下载安装JDK JDK下载路径&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 点击 Accept License Agreement &#xff0c;选择自己的系统类型JDK下载&#xff0c;然后安装JDK。 二、安装JDK 双击JDK运行&#xff0c;选择…

华中科技大学计算机学院发表论文规定,华中科技大学等7所大学取消“研究生毕业必须发表论文”要求...

华中科技大学等7所大学取消“研究生毕业必须发表论文”要求北京晨报发表于 2006/07/17 10:51中国7所大学取消“研究生毕业必须发表论文”要求中新网7月16日电据《北京晨报》报道&#xff0c;昨天&#xff0c;记者从大学校长论坛了解到&#xff0c;中国人民大学、北京师范大学、…

计算机网络中的广播啥意思,开启无线广播啥意思

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。以路由器为例&#xff0c;开启无线广播是指开启无线路由器功能。路由器(Router&#xff0c;又称路径器)是一种计算机网络设备&#xff0c;它能将数据包通过一个个网络传送至目的地(选…

jep290涉及jdk版本_JDK 14 – JEP 361从预览中切换表达式

jep290涉及jdk版本在我的前一篇文章中 &#xff0c;我写了有关作为JDK 12的预览功能发布的开关表达式和相关增强功能的信息。随后&#xff0c;在JDK 13中提出了一些更改&#xff0c;例如使用yield关键字从switch块返回值并在预览中发布。 在即将于明年3月在GA上市的即将发布的…

java变量作用域Scope

一、变量Scope 作用域同时决定了它的“可见性”以及“存在时间”。在C&#xff0c;C和Java里&#xff0c;作用域是由花括号的位置决定的。变量的作用域分为四个级别&#xff1a;类级、对象实例级、方法级、块级。 二、类级Scope 类级变量又称全局级变量或静态变量&#xff0c…

XML——解析XML文档

【0】README 0.1&#xff09;本文描述 转自 core java volume 2&#xff0c; 旨在理解 XML——解析XML文档 的基础知识&#xff1b; 0.2&#xff09; for source code, please visit https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/chapter2…

计算机维修与维护入门,计算机组装与维护基础知识

《计算机组装与维护基础知识》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《计算机组装与维护基础知识(5页珍藏版)》请在人人文库网上搜索。1、计算机组装与维护基础知识关键考点&#xff1a;CPU主板内存硬盘显卡CMOS硬件组装操作系统学生姓名&#xff1a;总分&…

java oauth2.0_OAuth 2.0 Java指南:5分钟保护您的应用程序安全

java oauth2.0使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 今天尝试Okta。 现代应用程序依赖于用户身份验证&#xff0c;但是它可能给Java开发人员带来困难的挑战&#xff0c;以及…

Java编程规范

一、常见命名规则 (1)匈牙利命名法 比 较著名的命名规则是匈牙利命名法&#xff0c;但这种命名法对于跨平台移植简直是灾难。这种命名方法是由Microsoft程序员查尔斯西蒙尼(Charles Simonyi) 提出的。其主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。匈牙利…

XML—— 验证XML文档

【0】README 0.0&#xff09;本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML—— 验证XML文档 的基础知识 0.1&#xff09;problemsolution &#xff08;干货——不推荐使用DOM 技术解析XML&#xff09; 0.1.1&#xff09;problem&#xff1a;如果仅仅按照…

计算机数据链路层教案,第三章 数据链路层(2) 新.ppt

文档介绍&#xff1a;计算机通信网20112011年教案年教案作者:段景山作者:段景山杨宁杨宁毛玉明毛玉明2第三章数据链路层??链路层功能链路层功能??成帧成帧??差错检测和纠正差错检测和纠正??差控与流控协议差控与流控协议??协议描述与验证协议描述与验证??示例示例?…

java导出javadoc文档

一、注释 (1)文档注释的格式化 生成的文档是 HTML 格式&#xff0c;而这些 HTML 格式的标识符并不是 javadoc 加的&#xff0c;而是我们在写注释的时候写上去的。比如&#xff0c;需要换行时&#xff0c;不是敲入一个回车符&#xff0c;而是写入 &#xff1c;br&#xff1e;&a…

java内核_测量时间:从Java到内核再到

java内核问题陈述 当您深入研究时&#xff0c;即使是最基本的问题也会变得很有趣。 今天&#xff0c;我想深入研究一下Java时间。 我们将从Java API的最基础知识开始&#xff0c;然后逐步降低堆栈&#xff1a;通过OpenJDK源代码glibc一直到Linux内核。 我们将研究各种环境下的性…