天天看點

Java字元串數組,根據ASCII表排序

ArrayList<String> list = new ArrayList<>();
private void initData() {
    try {
        JSONObject jsonObject = new JSONObject(JsonResult.test);
        Iterator<String> keys = jsonObject.keys();
            while (keys.hasNext()){
                list.add(keys.next());
            }
        getUrlParam(list);
            for(String str:list){
                Log.d("json",str);
            }
    } catch (Exception e) {
        e.printStackTrace();
    }
}


/**
 * 對字元串數組進行排序
 * @param keys
 * @return
 * */
public static ArrayList<String> getUrlParam(ArrayList<String> keys){

    for (int i = 0; i < keys.size() - 1; i++) {
        for (int j = 0; j < keys.size() - i -1; j++) {
            String pre = keys.get(j);
            String next = keys.get(j + 1);
            if(isMoreThan(pre, next)){
                String temp = pre;
                keys.set(j,next);
                keys.set(j+1 , temp);
            }
        }
    }
    return keys;
}

/**
 * 比較兩個字元串的大小,按字母的ASCII碼比較
 * @param pre
 * @param next
 * @return
 * */
private static boolean isMoreThan(String pre, String next){
    if(null == pre || null == next || "".equals(pre) || "".equals(next)){
        return false;
    }

    char[] c_pre = pre.toCharArray();
    char[] c_next = next.toCharArray();

    int minSize = Math.min(c_pre.length, c_next.length);

    for (int i = 0; i < minSize; i++) {
        if((int)c_pre[i] > (int)c_next[i]){
            return true;
        }else if((int)c_pre[i] < (int)c_next[i]){
            return false;
        }
    }
    if(c_pre.length > c_next.length){
        return true;
    }

    return false;
}

      

繼續閱讀