Java8-Guava实战示例

示例一:

跟示例三对比一下,尽量用示例三

List<InvoiceQueryBean> invoiceQueryBeanList = new ArrayList<>();
List<String> invoices = Lists.newArrayList(Iterators.transform(invoiceQueryBeanList.iterator(), new Function<InvoiceQueryBean, String>() {@Nullable@Overridepublic String apply(@Nullable InvoiceQueryBean input) {if (StringUtils.isNotBlank(input.getLoanInvoiceId())) {return input.getLoanInvoiceId();} else {return null;}}
}));
//去除空的 Iterators.removeIf(invoices.iterator(), StringUtils::isBlank);

示例二:

public static List<PersonLoanInvoiceQueryPojo> getInvoiceQueryPojoList(List<InvoiceQueryBean> invoiceQueryBean) {return Lists.newArrayList(Iterators.transform(invoiceQueryBean.iterator(),input -> input == null ? null :PersonLoanInvoiceQueryPojo.Builder.getInstance().addLoanInvoiceId(input.getLoanInvoiceId()).addUserName(input.getUserName()).addCertificateKind(input.getCertificateKind()).addCertificateNo(input.getCertificateNo()).addProductName(input.getProductName()).addMerchantName(input.getMerchantName()).addStoreName(input.getStoreName()).addApplyDate(input.getApplyDate()).addLoanAmount(input.getLoanAmount()).addLoanPeriod(input.getLoanPeriod()).addLoanPurpose(input.getLoanPurpose()).addLoanDate(input.getLoanDate()).addRate(input.getRate()).addChannelNo(input.getChannelNo()).addApproveDate(input.getApproveDate()).addReply(input.getReply()).addMarketingCenterId(input.getMarketingCenterId()).build()));
}
public class PersonLoanInvoiceQueryPojo implements Serializable{private static final long serialVersionUID = -408985049449365784L;private String loanInvoiceId;private String userId;private String userName;public static class Builder {private PersonLoanInvoiceQueryPojo instance = new PersonLoanInvoiceQueryPojo();private Builder(){}public static Builder getInstance() {return new Builder();}public static Builder getInstance(PersonLoanInvoiceQueryPojo instance){Builder builder = new Builder();builder.instance = instance;return builder;}public Builder addLoanInvoiceId(String loanInvoiceId) {this.instance.setLoanInvoiceId(loanInvoiceId);return this;}public Builder addUserId(String userId) {this.instance.setUserId(userId);return this;}public Builder addUserName(String userName) {this.instance.setUserName(userName);return this;}public PersonLoanInvoiceQueryPojo build() {return this.instance;}}setters();&getters();
}

 示例三:方法引用

  方法引用主要有三类:

    (1)指向静态方法的方法引用,(例如:Integer中的parseInt方法,写作Integer::parseInt

    (2)指向任意类型实例方法的方法引用(例如String中的length方法,写作String::length

    (3)指向现有对象的实例方法的方法引用(如下例)

import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;List<CreditPersonalInfoChangeApplySerial> applySerialList = new ArrayList<>();
List<String> operatorNoList = Lists.newArrayList(Iterators.transform(applySerialList.iterator(), CreditPersonalInfoChangeApplySerial::getOperatorNo)); //这个叫做lambda的方法引用,注意方法引用的这个方法不需要()

 示例四:

  Lambad将List转换成Map

import com.google.common.collect.Maps;List<QueryUserAppInfoByUserIdListPojo> operatorInfoList = new ArrayList<>();
Map<String, QueryUserAppInfoByUserIdListPojo> operatorMap= Maps.uniqueIndex(operatorInfoList.iterator(), QueryUserAppInfoByUserIdListPojo::getUserId);public class QueryUserAppInfoByUserIdListPojo implements Serializable {private static final long serialVersionUID = 6876288995978264269L;private String userId;public String getUserId() {return this.userId;}public void setUserId(String userId) {this.userId = userId;}}

 示例五:

List<UserPojo> list =  new ArrayList<>();
list.forEach(input -> {if (input.getCertificateKind().equals(EnumCertificateKind.RESIDENT_IDENTITY_CARD)) {userCertificateMap.put(pojo.getUserId(), input);}
});

 示例六:

  遍历的时候需要使用到元素的索引,很可惜,Java8 的 Iterable 并没有提供一个带索引的 forEach 方法,自动动手写一个满足自己的需求。

import java.util.Objects;
import java.util.function.BiConsumer;/*** Iterable 的工具类*/
public class Iterables {public static <E> void forEach(Iterable<? extends E> elements, BiConsumer<Integer, ? super E> action) {Objects.requireNonNull(elements);Objects.requireNonNull(action);int index = 0;for (E element : elements) {action.accept(index++, element);}}
}

 

public static void main(String[] args) throws Exception {List<String> list = Arrays.asList("a", "b", "b", "c", "c", "c", "d", "d", "d", "f", "f", "g");Iterables.forEach(list, (index, str) -> System.out.println(index + " -> " + str));
}

 示例七:Iterators.find

注意:find()函数有两个重载方法,其中一个是带 defaultValue 的,注意如果别迭代的集合没有符合条件的数据的话,一定要定义一个默认值。否则会报NoSuchElementException异常

Iterators.find(pojoList.iterator(), input -> input != null, null);

 

参考:

转载于:https://www.cnblogs.com/happyflyingpig/p/9004534.html

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

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

相关文章

java项目构建部署包

博客分类&#xff1a; JAVA Java 工程在生产环境运行时&#xff0c;一般需要构建成一个jar&#xff0c;同时在运行时需要把依赖的jar添加到classpath中去&#xff0c;如果直接运行添加classpath很不方便&#xff0c;比较方便的是创建一个shell脚本。在公司项目中看到把工程代码…

表达式前后缀表达形式 [zz]

(2012-09-12 13:08:39) 转载▼标签&#xff1a; 杂谈 转自&#xff1a;http://blog.csdn.net/whatforever/article/details/673853835,15,,80,70,-,*,20,/ //后缀表达方式(((3515)*(80-70))/20&#xff09;25 //中缀表达方式 /,*,,35,15,-,80,70, 2…

引用:初探Sql Server 执行计划及Sql查询优化

引用:初探Sql Server 执行计划及Sql查询优化 原文:引用:初探Sql Server 执行计划及Sql查询优化初探Sql Server 执行计划及Sql查询优化 收藏MSSQL优化之————探索MSSQL执行计划作者&#xff1a;no_mIss最近总想整理下对MSSQL的一些理解与感悟&#xff0c;却一直没有心思和时间…

Lombok,自动值和不可变项

我喜欢布兰登&#xff08;Brandon &#xff09;在博客文章中比较Project Lombok &#xff0c; AutoValue和Immutables的建议 &#xff0c;而这篇文章试图做到这一点。 我已经简要概述了Project Lombok &#xff0c; AutoValue和Immutables &#xff0c;但是这篇文章有所不同&am…

用interrupt()中断Java线程

Javathread 最近在学习Java线程相关的东西&#xff0c;和大家分享一下&#xff0c;有错误之处欢迎大家指正&#xff0e; 假如我们有一个任务如下&#xff0c;交给一个Java线程来执行&#xff0c;如何才能保证调用interrupt()来中断它呢&#xff1f; Java代码 class ATask imple…

JAVA分代收集机制详解

Java堆中是JVM管理的最大一块内存空间。主要存放对象实例。在JAVA中堆被分为两块区域&#xff1a;新生代&#xff08;young&#xff09;、老年代&#xff08;old&#xff09;。堆大小新生代老年代&#xff1b;&#xff08;新生代占堆空间的1/3、老年代占堆空间2/3&#xff09;新…

高可用架构

转载于:https://www.cnblogs.com/138026310/p/9088341.html

压缩vmware中的ubuntu系统(虚拟机瘦身大法)

压缩vmware中的ubuntu系统&#xff08;虚拟机瘦身大法&#xff09; 前提:你的虚拟机大小 < 你放置虚拟机的磁盘的剩余空间 1.在Termial(终端)里 运行"sudo vmware-toolbox"(需要root权限) 2.选择“shrink”选项卡 3.选中“/”&#xff0c;点击“shrink”按钮 4.完…

认识jQuery

一、JavaScript库 把一些浏览器兼容性的代码或者需要常用的函数装在一个js文件里,封装了很多js代码的一个js文件就是一个库 二、jQuery 是一个JavaScript库&#xff0c;免费开源的&#xff0c;体积小&#xff0c;链式编程&#xff0c;隐式迭代&#xff0c;很多优点jQuery 的功能…

Axis2 WebService(配置、发布、调用)

from:http://www.lifeba.org/arch/java_axis2_webservice.html 准备工作 1、下载&#xff1a;axis2-1.5.4-bin.zip,axis2-1.5.4-war.zip 下载地址&#xff1a;http://axis.apache.org/axis2/java/core/ 2、环境变量设置 AXIS2_HOME E:\research\axis2-1.5.4-bin\axis2-1.5.4 J…

SmartPDA图片

转载于:https://www.cnblogs.com/xyyshishuaige/p/9098613.html

基于国家标准的 EndNote 输出样式模板

发表于 2013-05-26作者 Haoxian Zeng浏览 983 次from:http://cnzhx.net/blog/endnote-output-style-cnzhx/1EndNote 相当于一个数据库&#xff0c;将添加/导入的文献存档。需要引用文献的时候就从中选择一个插入到文档中&#xff0c;EndNote 会自动给你编号、在文档末尾建立相应…

工厂设计模式解决什么问题_使用工厂模式解决设计问题

工厂设计模式解决什么问题工厂设计模式是面向对象环境中最常用的模式之一。 再次来自“创意设计”模式类别&#xff0c;即有关对象创建的所有信息。 在某些情况下&#xff0c;对象的创建很复杂&#xff0c;可能需要某种程度的抽象&#xff0c;以便客户端代码不了解这些复杂性和…

shiro 认证思路

转载于:https://www.cnblogs.com/hwgok/p/9101232.html

Java 9对可选的补充

哇&#xff0c;人们对Java 9的Stream API增添了 真正的兴趣。 想要更多&#xff1f; 让我们看一下…… 可选的 可选::流 这不需要任何解释&#xff1a; Stream<T> stream();想到的第一个词是&#xff1a; 终于 &#xff01; 最后&#xff0c;我们可以轻松地从可选值流…

Matlab功率谱估计

(2012-03-16 12:22:15) 随机信号处理 * 随机变量分布特征量 均值mean 协方差矩阵cov 相关系数矩阵corrcoef [R, P] corrcoef(X)&#xff0c;P值用于检验相关性&#xff0c;越小越相关&#xff0c;0.05以下为显著相关。 * 相关函数估计 相关函数估计xcorr [c,lags] xcorr(…

primefaces_PrimeFaces在GlassFish 3.1.2.2上推动大气

primefacesPrimeFaces 3.4在三天前发布。 除了通常令人敬畏的新组件和更新组件外&#xff0c;它还包括新的PrimeFaces Push框架。 基于Atmosphere&#xff0c;这为您的应用程序提供了简单的推送机制。 这是在最新的GlassFish 3.1.2.2上配置和运行它的方法。 准备工作 像往常一…

相关的意义

第四章 相关系数 [内容导读]   本章的内容在课程中具有承上启下的重要作用。一方面&#xff0c;相关系数是反映与描述一组数据的概括性特征量数&#xff0c;只不过这里的数据是二元变量的观测数据。另一方面&#xff0c;对相关系数内容的理解与掌握&#xff0c;是建立在散点…

35

1 转载于:https://www.cnblogs.com/venicid/p/9116284.html

glassfish默认密码_在MySQL上使用含盐密码的GlassFish JDBC安全性

glassfish默认密码我在该博客上最成功的文章之一是有关在GlassFish上使用基于表单的身份验证设置JDBC安全领域的文章 。 对这篇文章的一些评论使我意识到&#xff0c;要真正使它安全&#xff0c;应该做的还很多。 开箱即用的安全性 图片&#xff1a; TheKenChan &#xff08; …