30/09/2018, 19:26

Đếm số lần xuất hiện các từ trong chuỗi bằng map trong java

import java.util.*;

public class Main {

public static void main(String[] args){
    String str = "hello words hello";
    str = str.replaceAll(",","");
    String[] arr = str.split(" ");
    String key="";
    Integer value;
    HashMap<String, Integer> map = new HashMap<String, Integer>();
    for(int i=0;i<arr.length;i++){
        key = arr[i];
        if(map.containsKey(key)){
            value = map.get(key);
            map.remove(key);
            map.put(key, value+1);
        } else{
            map.put(key, 1);
        }
    }
    
    Set set=map.keySet();
    Iterator i = set.iterator();
    
    while(i.hasNext()){
        key=(String)i.next();
        System.out.println("Từ '"+key+"' xuất hiện "+map.get(key)+" lần");
    }
}

}

Đây là code của em ạ, nhưng em không hiểu sao em muốn output là:

Từ ‘hello’ xuất hiện 2 lần
Từ ‘words’ xuất hiện 1 lần

Nhưng nó lại cứ ra là :

Từ ‘words’ xuất hiện 1 lần
Từ ‘hello’ xuất hiện 2 lần

Ai giúp em giải thích tại sao lại như vậy được không ạ, em cảm ơn

Nguyen Ca viết 21:36 ngày 30/09/2018

map.remove(key);
map.put(key, value+1)

Lần lặp thứ 3 đã remove cái hello đầu tiên, rôi add cái mới vào nên ra thế.

viết 21:31 ngày 30/09/2018

xài TreeMap thay cho HashMap

Bài liên quan
0