查找字符串上的重复单词并计算重复次数

2022-09-04 05:45:23

我需要在字符串上找到重复的单词,然后计算它们重复了多少次。所以基本上,如果输入字符串是这样的:

String s = "House, House, House, Dog, Dog, Dog, Dog";

我需要创建一个没有重复的新字符串列表,并在其他地方保存每个单词的重复量,例如:

新弦:“房子,狗”

新整数数组: [3, 4]

有没有办法用Java轻松做到这一点?我已经设法使用s.split()分离字符串,但是如何计算重复次数并在新字符串上消除它们?谢谢!


答案 1

你已经完成了艰苦的工作。现在,您只需使用 a 来计算实例数:Map

Map<String, Integer> occurrences = new HashMap<String, Integer>();

for ( String word : splitWords ) {
   Integer oldCount = occurrences.get(word);
   if ( oldCount == null ) {
      oldCount = 0;
   }
   occurrences.put(word, oldCount + 1);
}

使用会告诉你一个单词出现了很多次。您可以通过循环访问来构造新列表:map.get(word)map.keySet()

for ( String word : occurrences.keySet() ) {
  //do something with word
}

请注意,您从中获得的内容的顺序是任意的。如果需要按单词首次出现在输入 String 中的时间进行排序,则应改用 。keySetLinkedHashMap


答案 2
public class StringsCount{

    public static void main(String args[]) {

        String value = "This is testing Program testing Program";

        String item[] = value.split(" ");

        HashMap<String, Integer> map = new HashMap<>();

        for (String t : item) {
            if (map.containsKey(t)) {
                map.put(t, map.get(t) + 1);

            } else {
                map.put(t, 1);
            }
        }
        Set<String> keys = map.keySet();
        for (String key : keys) {
            System.out.println(key);
            System.out.println(map.get(key));
        }

    }
}