java guava 使用_Java8-Guava实战示例
示例一:
跟示例三對比一下,盡量用示例三
List invoiceQueryBeanList= new ArrayList<>();
List invoices =Lists.newArrayList(Iterators.transform(
invoiceQueryBeanList.iterator(),new Function() {
@Nullable
@OverridepublicString apply(@Nullable InvoiceQueryBean input) {if(StringUtils.isNotBlank(input.getLoanInvoiceId())) {returninput.getLoanInvoiceId();
}else{return null;
}
}
}));
//去除空的
Iterators.removeIf(invoices.iterator(), StringUtils::isBlank);
示例二:
public static List getInvoiceQueryPojoList(ListinvoiceQueryBean) {returnLists.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 implementsSerializable{private static final long serialVersionUID = -408985049449365784L;privateString loanInvoiceId;privateString userId;privateString userName;public static classBuilder {private PersonLoanInvoiceQueryPojo instance = newPersonLoanInvoiceQueryPojo();privateBuilder(){}public staticBuilder getInstance() {return newBuilder();
}public staticBuilder getInstance(PersonLoanInvoiceQueryPojo instance){
Builder builder= newBuilder();
builder.instance=instance;returnbuilder;
}publicBuilder addLoanInvoiceId(String loanInvoiceId) {this.instance.setLoanInvoiceId(loanInvoiceId);return this;
}publicBuilder addUserId(String userId) {this.instance.setUserId(userId);return this;
}publicBuilder addUserName(String userName) {this.instance.setUserName(userName);return this;
}publicPersonLoanInvoiceQueryPojo build() {return this.instance;
}
}
setters();&getters();
}
示例三:方法引用
方法引用主要有三類:
(1)指向靜態方法的方法引用,(例如:Integer中的parseInt方法,寫作Integer::parseInt)
(2)指向任意類型實例方法的方法引用(例如String中的length方法,寫作String::length)
(3)指向現有對象的實例方法的方法引用(如下例)
importcom.google.common.collect.Iterators;importcom.google.common.collect.Lists;
List applySerialList= new ArrayList<>();
List operatorNoList =Lists.newArrayList(
Iterators.transform(applySerialList.iterator(), CreditPersonalInfoChangeApplySerial::getOperatorNo)); //這個叫做lambda的方法引用,注意方法引用的這個方法不需要()
示例四:
Lambad將List轉換成Map
importcom.google.common.collect.Maps;
List operatorInfoList= new ArrayList<>();
MapoperatorMap=Maps.uniqueIndex(operatorInfoList.iterator(), QueryUserAppInfoByUserIdListPojo::getUserId);public class QueryUserAppInfoByUserIdListPojo implementsSerializable {private static final long serialVersionUID = 6876288995978264269L;privateString userId;publicString getUserId() {return this.userId;
}public voidsetUserId(String userId) {this.userId =userId;
}
}
示例五:
List list= new ArrayList<>();
list.forEach(input->{if(input.getCertificateKind().equals(EnumCertificateKind.RESIDENT_IDENTITY_CARD)) {
userCertificateMap.put(pojo.getUserId(), input);
}
});
示例六:
遍歷的時候需要使用到元素的索引,很可惜,Java8 的?Iterable?并沒有提供一個帶索引的?forEach?方法,自動動手寫一個滿足自己的需求。
importjava.util.Objects;importjava.util.function.BiConsumer;/*** Iterable 的工具類*/
public classIterables {public static voidforEach(
Iterable extends E> elements, BiConsumeraction) {
Objects.requireNonNull(elements);
Objects.requireNonNull(action);int index = 0;for(E element : elements) {
action.accept(index++, element);
}
}
}
public static void main(String[] args) throwsException {
List 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);
參考:
總結
以上是生活随笔為你收集整理的java guava 使用_Java8-Guava实战示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java integer 不变模式_Ja
- 下一篇: python barrier optio