通过出现降序的子串 - Java

Mat*_* B. 5 java sorting string substring

以免我说我有字符串:

 String test= "AA BB CC BB BB CC BB";
Run Code Online (Sandbox Code Playgroud)

我想做的是像这样创建String数组:

 String[]{"BB", "CC", "AA"}
Run Code Online (Sandbox Code Playgroud)

由于B发生4次,C次2次,A只1次.

这个问题的解决方案是什么样的?

use*_*421 9

String test = "AA BB CC BB BB CC BB";
System.out.println(Arrays.deepToString(sort(test)));
Run Code Online (Sandbox Code Playgroud)

输出: [BB, CC, AA]

码:

public static String[] sort(String test) {
    String[] strings = test.split(" ");
    HashMap<String,Integer> map = new HashMap<String,Integer>();
    for (String s : strings) {
        Integer i = map.get(s);
        if (i != null) {
            map.put(s, i+1);
        } else {
            map.put(s, 1);
        }
    }

    TreeMap<Integer,String> sort = new TreeMap<Integer,String>(Collections.reverseOrder());
    for (Entry<String,Integer> e : map.entrySet()) {
        sort.put(e.getValue(), e.getKey());
    }

    return sort.values().toArray(new String[0]);
}
Run Code Online (Sandbox Code Playgroud)