簡體   English   中英

對Java中的單詞和字母進行排序

[英]Sort the words and letters in Java

下面的代碼計算單詞和字母在字符串中出現的次數。 如何將輸出從最高到最低排序? 輸出應類似於:

the - 2
quick - 1 
brown - 1 
fox - 1
t - 2
h - 2
e - 2
b - 1

我的代碼:

import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

public class Tokenizer {
    public static void main(String[] args) {
        int index = 0;
        int tokenCount;
        int i = 0;
        Map<String, Integer> wordCount = new HashMap<String, Integer>();
        Map<Integer, Integer> letterCount = new HashMap<Integer, Integer>();
        String message = "The Quick brown fox the";

        StringTokenizer string = new StringTokenizer(message);

        tokenCount = string.countTokens();
        System.out.println("Number of tokens = " + tokenCount);
        while (string.hasMoreTokens()) {
            String word = string.nextToken().toLowerCase();
            Integer count = wordCount.get(word);
            Integer lettercount = letterCount.get(word);

            if (count == null) {
                // this means the word was encountered the first time
                wordCount.put(word, 1);
            } else {
                // word was already encountered we need to increment the count
                wordCount.put(word, count + 1);
            }
        }
        for (String words : wordCount.keySet()) {
            System.out.println("Word : " + words + " has count :" + wordCount.get(words));
        }
        for (i = 0; i < message.length(); i++) {
            char c = message.charAt(i);
            if (c != ' ') {
                int value = letterCount.getOrDefault((int) c, 0);
                letterCount.put((int) c, value + 1);
            }
        }

        for (int key : letterCount.keySet()) {
            System.out.println((char) key + ": " + letterCount.get(key));
        }
    }
}

您有一個Map<String, Integer> ; 我建議遵循另一個LinkedHashMap<String, Integer> ,該方法通過插入按值排序的鍵來填充。

似乎您想按其值(即計數)對地圖進行排序。 這里是一些一般的解決方案

具體針對您的情況,一個簡單的解決方案可能是:

  1. 使用TreeSet<Integer>將所有可能的計數值保存在HashMap

  2. 從高到低迭代TreeSet

  3. 在2中提到的迭代中,使用循環來輸出所有count-等於當前迭代count的字數對。

請查看是否有幫助。

只需使用列表的概念並將所有數據添加到列表中,然后對其使用排序方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM