利用 ObjectMapper 转对象 指定泛型类型
new ObjectMapper().readValue(json, new TypeReference<HashMap<String, Bean>>(){});
new ObjectMapper().readValue(json, new TypeReference<Map<String, List<Map<String, String>>>>() {})
对象集合根据某个值进行分组求和, 获取求和后的Map
List<Product> productList = new ArrayList<>();
//获取ProductType相同的重量合计Map<产品类型, 总重量>
Map<String, BigDecimal> productTypeWeight = productList.stream().collect(Collectors.groupingBy(
Product::ProductType,
Collectors.reducing(BigDecimal.ZERO, Product::getWeight, BigDecimal::add)));
Iterable类型使用Stream流式处理
StreamSupport.stream(Iterable.spliterator(), false).collect(Collectors.toList());
StringJoiner对象 指定分隔符
老项目中使用了JdbcTemplate 需手写sql字符串, 以前的写法是使用StringBuffer进行字符串拼接, 会导致大意忘记最后加空格
StringBuffer sqlBuf = new StringBuffer();
sqlBuf.append("SELECT ");
sqlBuf.append("(SELECT xx.org_desc FROM pub_organizations xx WHERE xx.org_code = mm.factory_code) AS factoryName ");
sqlBuf.append("FROM mkt_bid_order mm ");
sqlBuf.append("INNER JOIN pub_step ss ON mm.ID = ss.source_id ");
使用StringJoiner对象, 指定空格分隔, StringJoiner对象底层维护的是StringBuffer对象
//指定空格进行分隔
StringJoiner auditItem = new StringJoiner(" ");
auditItem.add("(SELECT review_detail_desc FROM (");
auditItem.add("SELECT ROW_NUMBER() OVER (ORDER BY id) AS rownum, zz.review_detail_desc");
auditItem.add("FROM mkt_check_review xx");
String.join()方法就是使用StringJoiner对象来实现
StopWatch 统计接口耗时时间
StopWatch stopWatch = new StopWatch("任务名称");
stopWatch.start(); //开始记时;
stopWatch.stop(); // 结束记时;
stopWatch.getLastTaskTimeMillis(); //获取毫秒值