日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java8-Guava实战示例

發(fā)布時(shí)間:2023/12/2 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java8-Guava实战示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

示例一:

跟示例三對比一下,盡量用示例三

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)指向靜態(tài)方法的方法引用,(例如:Integer中的parseInt方法,寫作Integer::parseInt

    (2)指向任意類型實(shí)例方法的方法引用(例如String中的length方法,寫作String::length

    (3)指向現(xiàn)有對象的實(shí)例方法的方法引用(如下例)

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)); //這個(gè)叫做lambda的方法引用,注意方法引用的這個(gè)方法不需要()

?示例四:

  Lambad將List轉(zhuǎn)換成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);} });

?示例六:

  遍歷的時(shí)候需要使用到元素的索引,很可惜,Java8 的?Iterable?并沒有提供一個(gè)帶索引的?forEach?方法,自動動手寫一個(gè)滿足自己的需求。

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()函數(shù)有兩個(gè)重載方法,其中一個(gè)是帶 defaultValue 的,注意如果別迭代的集合沒有符合條件的數(shù)據(jù)的話,一定要定義一個(gè)默認(rèn)值。否則會報(bào)NoSuchElementException異常

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

?

參考:

轉(zhuǎn)載于:https://www.cnblogs.com/happyflyingpig/p/9004534.html

總結(jié)

以上是生活随笔為你收集整理的Java8-Guava实战示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。