在業(yè)務(wù)檔口由于得到的數(shù)據(jù)全是 List<Map<String,Object>>由于最終要返回的數(shù)據(jù)全是 List<Map<String,String>>使用foreach和map.entrySet()來進(jìn)行轉(zhuǎn)換效率有點低,有木有更好的解決方案
1 回答

月關(guān)寶盒
注意:業(yè)務(wù)方法用
TA貢獻(xiàn)1772條經(jīng)驗 獲得超5個贊
這個簡單
可以并行stream+map+collector很方便
代碼的話,我現(xiàn)在不方便敲代碼,有時間給你補上,但是需要你們的項目支持jdk8
更新(抱歉,剛上班,給你寫了一下,你看看和你的業(yè)務(wù)匹配嗎,另外試下效率,當(dāng)然,還有改進(jìn)的空間...)
注意:業(yè)務(wù)方法用private
修飾,避免暴露
public class Test { public static void main(String[] args) { // 構(gòu)造參數(shù) List<Map<String, Object>> input = new ArrayList<Map<String, Object>>() {{ add(Collections.singletonMap("one", 1)); add(Collections.singletonMap("two", 2)); add(Collections.singletonMap("three", 3)); trimToSize(); }}; // 開始轉(zhuǎn)換 List<Map<String,String>> output = input.parallelStream().map(Test::convert).collect(toList()); // 驗證 output.forEach(m->{ m.forEach((k, v)-> System.out.println(k + "\t" + v)); }); } /** * 業(yè)務(wù) * */ private static Map<String, String> convert(Map<String, Object> map) { Objects.requireNonNull(map); Map<String, String> result = new ConcurrentHashMap<>(map.size()); // 業(yè)務(wù)比較繁雜的,可以用compute方法 map.forEach((key, value) -> result.put(key, value.toString())); return result; } }
添加回答
舉報
0/150
提交
取消