業務需求:現在有好多個維度list 機構:listdeptlist、渠道:listchannellist、
產品:listproductlist、口徑:listspeclist等維度。
dimension 物件有code,name,type屬性。
現在需要求所有維度的笛卡爾集的物件。
一般我們會想到巢狀for迴圈,但是for迴圈會有某乙個集合為null的問題
現在我們寫乙個工具方法:
private static list> getdescartes(list>){
list> returnlist = new arraylist<>();
descartesrecursive(list,0,retrunlist,new arraylist());
*遞迴實現
*原理:從原始list的0開始遍歷到最後
*originallist 原始list
*position 當前遞迴在原始list的位置
*returnlist 返回結果
* cachelist 臨時儲存的list
private static void descartesrecursive(list> originallist ,int position,list> returnlist ,listcachelist ){
listoriginalttemlist = originallist .get(position);
for(int i =0;i < originalttemlist .size();i++){
//最後乙個復用cachelist,節省記憶體
listchildcachelist = (i == originalttemlist .size() -1)?cachelist :new arraylist<>(cachelist );
childcachelist .add(originalttemlist .get(i));
if(position ==originallist .size()-1){ //遍歷到最後退出遞迴
returnlist .add(childcachelist );
continue;
descartesrecursive(originallist ,position+1,returnlist ,childcachelist );
合併多個List
public class listutil catch exception e for int i 0,len lists.length i len i return list 測試方法 public class listutiltest system.out.println list 2018 1...
java8 多個list物件用lambda求差集
業務場景 呼叫同步介面獲取當前全部有效賬戶,資料庫已存在部分賬戶資訊,因此需要篩選同步介面中已存在本地的帳戶。呼叫介面獲取的資料集合 listlist response.getdata getitems 本地查詢出來的賬戶集合 listtowlist accountrepository.findal...
python 不用迴圈列印1 1000
題目 螢幕上列印1 1000這1000個數,不許使用迴圈語句 條件語句,不許使用?算符。不許在源 中用列舉輸出語句的辦法傻打,比如一千個print語句不行,不再贅述其他傻打行為,大家都能領會精神。解答 newline n numbers map lambda x str x range 1,1000...