我有 2 個數(shù)組列表,一個自定義對象的 RequestList 和 ResponseList。請求列表有 10 個帶有 RequestHeader 和 RequestBody 的soap 請求。10 是一個示例(甚至可能是 1000 條或更多甚至 100 萬條記錄) 現(xiàn)在,RequestHeader(Header.java) 有一個名為 RequestId 的元素,其類型為 String請求對象<CustomClassRequest> <header> <RequestId>1</RequestId> </header> <Body></Body></CustomClassRequest>假設RequestList有10個soap請求,requestId從1到10(使用數(shù)字來簡化這個用例)現(xiàn)在,當我收到響應時,我會并行觸發(fā)這些soap 請求并釋放插入訂單,因為它在我的RequestList 中。因此,我的 ResponseList 將有所有這 10 個肥皂請求的響應,但 requestId 的順序不同。響應對象<CustomClassResponse> <header> <RequestId>1</RequestId> </header> <Body></Body></CustomClassResponse>注意:響應中的標頭屬于不同的類 ResponseHeader.java我是否可以根據(jù) RequestList 存在的插入順序使用公共字段 RequestId 對我的 ResponseList 進行排序。讓我知道 Java 8 API 是否有可能的解決方案,甚至使用任何第三方解決方案
2 回答

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
您可以使用 java8 lambda 表達式
例如
resposneList.stream() .sorted((o1, o2) -> o1.getHeader().getRequestId() .compareTo(o2.getHeader().getRequestId()))`

一只萌萌小番薯
TA貢獻1795條經驗 獲得超7個贊
您不應該使用 Comparator 因為您不比較它們之間的列表元素來計算它們的順序。
您可以從將 id 關聯(lián)到響應的響應列表中創(chuàng)建一個 Map。
然后流式傳輸請求并將其 id 映射到映射鍵。
這是為響應創(chuàng)建新列表的解決方案:
Map<Integer, Response> responseByIdMap = responses.stream() .collect(toMap(Response::getId, r->r);responses = request.stream() .map( req -> responseByIdMap.get(req.getId)) .collect(toList());
添加回答
舉報
0/150
提交
取消