java 根据 ASCII 码表顺序升序排列

原理通过sort()方法排序。

 

/**
 * 反射拼接类的属性值
 *
 * @return
 */
private String getAscOrderString() {
    Object object = this;
    String rawString = "";
    Map<String, String> map = new HashMap<String, String>();

    //获取所有的属性组
    Field[] superField = this.getClass().getSuperclass().getDeclaredFields();
    Field[] selfField = this.getClass().getDeclaredFields();

    List<Field> allfield = new ArrayList();

    allfield.addAll(Arrays.stream(superField).collect(Collectors.toList()));
    allfield.addAll(Arrays.stream(selfField).collect(Collectors.toList()));

    for (int i = 0; i < allfield.size(); i++) {
        Field field = allfield.get(i);
        String fieldName = field.getName();
        if (Objects.nonNull(field.getAnnotation(JSONField.class))) {
            fieldName = field.getAnnotation(JSONField.class).name();
        }
        field.setAccessible(true);
        String valString;
        try {
            if (field.get(object) == null) {
                valString = "";
            } else {
                valString = field.get(object).toString();
            }
            map.put(fieldName, valString);
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    Collection<String> keyset = map.keySet();
    List list = new ArrayList<String>(keyset);
    Collections.sort(list);
    for (int i = 0; i < list.size(); i++) {
        if (i == (list.size() - 1)) {
            if (!StringUtils.isEmpty(map.get(list.get(i)))) {
                rawString += list.get(i) + "=" + map.get(list.get(i));
            }
        } else {
            if (!StringUtils.isEmpty(map.get(list.get(i)))) {
                rawString += list.get(i) + "=" + map.get(list.get(i)) + "&";
            }
        }
    }
    return rawString;
}

  

posted @ 2020-09-25 14:53  一入IT岁月催  阅读(3434)  评论(0)    收藏  举报