为了账号安全,请及时绑定邮箱和手机立即绑定

java中泛型类型转换

java中泛型类型转换

心有法竹 2018-08-10 16:50:48
在业务档口由于得到的数据全是 List<Map<String,Object>>由于最终要返回的数据全是 List<Map<String,String>>使用foreach和map.entrySet()来进行转换效率有点低,有木有更好的解决方案
查看完整描述

1 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

这个简单
可以并行stream+map+collector很方便
代码的话,我现在不方便敲代码,有时间给你补上,但是需要你们的项目支持jdk8

更新(抱歉,刚上班,给你写了一下,你看看和你的业务匹配吗,另外试下效率,当然,还有改进的空间...)

注意:业务方法用private修饰,避免暴露

public class Test {  public static void main(String[] args) {    // 构造参数
    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();
    }};    // 开始转换
    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));
    });
  }  /**
   * 业务
   * */
  private static Map<String, String> convert(Map<String, Object> map) {
    Objects.requireNonNull(map);
    Map<String, String>  result = new ConcurrentHashMap<>(map.size());    // 业务比较繁杂的,可以用compute方法
    map.forEach((key, value) -> result.put(key, value.toString()));    return result;
  }
}


查看完整回答
反对 回复 2018-08-12
  • 1 回答
  • 0 关注
  • 747 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号