【问题标题】:Java Print String using descending java Hash Map使用降序 java Hash Map 的 Java 打印字符串
【发布时间】:2017-02-08 00:45:18
【问题描述】:

假设我有一个字符串“aaabcccdddd” 我已将每个字母存储为键,并将字符的每个重复存储为哈希映射中的值。如何使用地图按降序将字符打印到控制台。例如=“dddcccaaab”

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

【问题讨论】:

  • 向我们展示一些代码以更好地解释您想要做什么。
  • 你说你已经创建了一个哈希映射,我想你是在代码中做到的?
  • string a= "abbcccddd" count a=2;计数 b=2,计数 c=3; count d=4; 这没有意义
  • 嘿,我真的没有最能描述我的情况的代码。所以我希望这会有所帮助 - string a= "babcdcdcd";数一=一;计数 b=2,计数 c=3;计数d=4;我将这些值存储在哈希图中(基本上每个字母出现多少次,假设没有空格或非字母)我需要打印出出现次数最多的字母,即 d=4,然后按照顺序和我的最终输出应该是按降序返回的初始字符串的排序形式,如“ddddcccbba”
  • 这是我使用的代码。我只需要弄清楚如何排序,然后按降序打印 - void str(String s) { int len = s.length(); Map elements = new HashMap(Math.min(len, 26)); Map sortedByValues;字符串 concact=""; int b;char a; for (int i = 0; i

标签: java string hashmap


【解决方案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!

【讨论】:

  • 有什么方法可以确保顺序总是降序吗?
  • 这就是TreeMap的原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多