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;
}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM