fastjson使用, mysql left join 合并多条数据, ArrayUtils.addAll注意事项, list set转化, stream流式处理

fastJson中java对象 jsonObject jsonArray之间转换 【原文】

  1. java对象转jsonObject

    User u = new User();
    u.setName("yinyuy");
    JSONObject json = (JSONObject) JSONObject.toJSON(u);

  2. jsonArray添加jsonObject

    User u = new User();
    u.setName("yinyuy");
    JSONArray jsonArray = new JSONArray();
    JSONObject json = (JSONObject) JSONObject.toJSON(u);
    jsonArray.add(json);

  3. 解析jsonArray对象为java对象集合

    List listAnswerJson = JSONArray.parseArray(userAnswerSheetJsonArr.toString(),AnswerSheet.class);

left join 时 只查询重复数据的一条【原文】

select a.id from app a
left join (select uid,id,name from weixin group by uid) b on a.id=b.uid

注意:如果开启了sqlmode full_group_by group by 前面的select 只能查询group by 的字段,这个sql就会有问题

ArrayUtils.addAll 注意事项

ArrayUtils.addAll 合并2个数组,底层是使用System.arraycopy方法实现。
只支持2个数组合并,不支持多个。
虽然编译通过,但是会报错 Cannot store java.io.Serializable in an array of java.lang.String

array list set转换方式 【原文】

  1. set转array, toArray方法

    Set jobNumbers = new HashSet<>();
    String[] jobNumber = jobNumbers.toArray(new String[jobNumbers.size()])

  2. array转set, Arrays.asList方法

    String[] jobNumers = entity.getTeamMonitorJobNumber().split(",");
    Set jobNumbers = new HashSet<>(Arrays.asList(jobNumers ));

  3. List转Set, Set转List

    Set set = new HashSet<>(list);
    System.out.println("set: " + set);

    List list_1 = new ArrayList<>(set);
    System.out.println("list_1: " + list_1);

使用流式处理数组或者列表

// 过滤列表,输出为列表
List curr = dictDTOS.stream().filter(data -> StringUtils.equalsIgnoreCase(pointMaterialRes.getExchangeType(),data.getDictKey())).collect(Collectors.toList());
// 选取对象某属性,输出为数组
String[] materialIdArray = materialEntities.stream().map(data -> data.getId().toString()).toArray(String[]::new);
// 选取对象某属性,输出为字符串,用,拼接
String data = staffDTOS.stream().map(StaffDTO::getName).collect(Collectors.joining(","))

posted @ 2021-11-11 14:50  CalronLoveRonnie  阅读(745)  评论(0)    收藏  举报
AmazingCounters.com