2017-02-08 10 views
-1

Допустим, у меня есть строка «aaabcccdddd» Я сохранил каждый алфавит в виде ключей и каждое повторение символа как значение в хэш-карте. Как использовать карту для вывода на консоль символов в порядке убывания. Например, = "dddcccaaab"Строка печати Java с использованием нисходящей java-карты хэша

void str(String s) { 
    int len = s.length(); 
    Map<Character, Integer> elements = new HashMap<>(Math.min(len, 26)); 
    Map<Character, Integer> sortedByValues; 

    String concact="";  int b;char a; 
    for (int i = 0; i < len; i++){ 
     if (!elements.containsKey(s.charAt(i))) 
      elements.put(s.charAt(i), 1); 
     else 
      elements.put(s.charAt(i), elements.get(s.charAt(i)) + 1);} 
+1

показать нам код, чтобы лучше объяснить, что вы хотите сделать. –

+0

Вы говорите, что создали хэш-карту, я полагаю, вы сделали это в коде? – mherzig

+0

* string a = "abbcccddd" count a = 2; счет b = 2, счет c = 3; count d = 4; * ** Это не имеет смысла ** –

ответ

1

преобразующих HashMap к TreeMap:

import java.util.*; 
import java.util.stream.Collectors; 

class Main { 
    public static void main(String[] args) { 
    String test = "aaabcccdddd"; 
    Map<String, Long> hashMap = 
     Arrays.stream(test.split("")). 
     collect(Collectors.groupingBy(c -> c, Collectors.counting())); 
    // System.out.println(hashMap); // {a=3, b=1, c=3, d=4} 
    Map<String, Long> treeMap = new TreeMap(Collections.reverseOrder()); 
    treeMap.putAll(hashMap); 
    // System.out.println(treeMap); // {d=4, c=3, b=1, a=3} 
    for (Map.Entry<String, Long> entry : treeMap.entrySet()) { 
     for(int i = 0; i < entry.getValue(); i++) { 
     System.out.print(entry.getKey()); 
     } 
    } 
    } 
} 

Выход:

ddddcccbaaa 

Попробуйте here!

+0

есть ли способ убедиться, что заказ всегда спускается? –

+0

Вот почему «TreeMap» – shash678