1宾巍、問題:List<Integer> goodsShippingTypeList = checkoutGoodsBO.getGoodsBO().getShippingTemplateList()
.stream().map(GoodsShippingTemplateBO::getType).collect(Collectors.toList());驮审?
有一個(gè)集合:
List<User> users = getList(); //從數(shù)據(jù)庫(kù)查詢的用戶集合
現(xiàn)在想獲取User的身份證號(hào)碼哺眯;在后續(xù)的邏輯處理中要用;
常用的方法我們大家都知道,用for循環(huán),
List<String> idcards=new ArrayList<String>();//定義一個(gè)集合來(lái)裝身份證號(hào)碼
for(int i=0;i<users.size();i++){
idcards.add(users.get(i).getIdcard());
}
這種方法要寫好幾行代碼撇叁,有沒有簡(jiǎn)單點(diǎn)的,有畦贸,java8 API能一行搞定:
List<String> idcards= users.stream().map(User::getIdcard).collect(Collectors.toList())
解釋下一這行代碼:
users:一個(gè)實(shí)體類的集合陨闹,類型為L(zhǎng)ist<User>
User:實(shí)體類
getIdcard:實(shí)體類中的get方法,為獲取User的idcard
stream()優(yōu)點(diǎn)
無(wú)存儲(chǔ)薄坏。stream不是一種數(shù)據(jù)結(jié)構(gòu)趋厉,它只是某種數(shù)據(jù)源的一個(gè)視圖,數(shù)據(jù)源可以是一個(gè)數(shù)組胶坠,Java容器或I/O channel等君账。
為函數(shù)式編程而生。對(duì)stream的任何修改都不會(huì)修改背后的數(shù)據(jù)源沈善,比如對(duì)stream執(zhí)行過濾操作并不會(huì)刪除被過濾的元素杈绸,而是會(huì)產(chǎn)生一個(gè)不包含被過濾元素的新stream。
惰式執(zhí)行矮瘟。stream上的操作并不會(huì)立即執(zhí)行,只有等到用戶真正需要結(jié)果的時(shí)候才會(huì)執(zhí)行塑娇。
可消費(fèi)性澈侠。stream只能被“消費(fèi)”一次,一旦遍歷過就會(huì)失效埋酬,就像容器的迭代器那樣哨啃,想要再次遍歷必須重新生成。
2写妥、問題2:selectableShippingList.forEach(
checkoutShippingBO -> checkoutShippingBO.setShippingFee(new BigDecimal("2.00")));
參考:https://blog.csdn.net/CDW2328/article/details/89852962
3拳球、selectableShippingTypeList.size() > 1
列表中元素大于1,即快遞方式大于1種
4珍特、問題:
@SentinelResource(value = "basic_risk:getUserRiskScore",fallback = "getUserRiskScoreFallback")
public JsonResult<ResultData> getUserRiskScore(RiskBaseParam riskBaseParam) {
return riskEngineDecisionClient.checkRisk(riskBaseParam);
}
/**
* Title:降級(jí)策略
* @author ylt
* @date 2021/8/4 10:35 上午
*/
public JsonResult<ResultData> getUserRiskScoreFallback(RiskBaseParam riskBaseParam) {
log.warn("基礎(chǔ)風(fēng)控服務(wù)降級(jí)parm =[{}]", JSON.toJSONString(riskBaseParam));
return JsonResult.success(new ResultData());
}
}
@SentinelResource走降級(jí)策略
5祝峻、線上空指針問題:
if (StringUtils.isBlank(score) || Objects.equals(score,"null")) {
score = "0.0";
}
判空時(shí)需要判斷score為null的情況