0
我試圖刪除地圖條目,但還沒有弄清楚現在怎麼樣,意思是我有一段時間,我做了另一張地圖。從Map/HashMap中刪除重複的值,並獲得最頻繁的值
- 我需要找幾個句子出現。 (我不知道 句子中可能出現的詞語)。
- 在句子中獲得最多的併發單詞,無論大寫還是小寫和重音。
- 獲取句子中的第二個和第三個併發單詞。
- 打印出現次數最多的併發單詞。
- 儘可能高效。
點5是最重要的,下面你會看到我到目前爲止。
public class StringTest {
public static void main(String[] args) {
String stringTest = "En esta cadena tenemos mas cadenas que la cadena principal la primera vez que intente esta solucion no pude mas que intentar una y otra vez vez vez vez";
new StringTest(stringTest);
}
public StringTest(String string) {
String [] splitString = string.split(" ");
Map<String, Integer> mapString = new HashMap<String, Integer>();
mapString.put(splitString[0], 1);
for (int i=1; i <= splitString.length-1; i++){
if (mapString.containsKey(splitString[i])){
mapString.put(splitString[i], mapString.get(splitString[i])+1);
} else{
mapString.put(splitString[i], 1);
}
}
Map<String, Integer> newMap = new HashMap<String, Integer>();
for (Entry<String, Integer> entry : mapString.entrySet()){
if (entry.getValue()!=1){
newMap.put(entry.getKey(), entry.getValue());
}
}
System.out.println(newMap);
}
}
兩件事情:1。爲什麼把第一個元素的地圖嗎?我不會做「mapString.put(splitString [0],1);」但改變你的循環從0開始; 2.您需要一個變量來保存trim()值。您正在檢查trim(),但將其放入地圖中不受限制。一個簡單的「String key = splitString [I] .trim();」會工作。然後用鑰匙工作。 – Dakoda
也是第4項:「打印出現次數最多的同時出現的單詞」以讀取他們想要的最高出現次數。可能是我錯了,但如果它是正確的,你可能需要對輸出進行排序。 – Dakoda
@達科達1.-我試圖跳過一個IF做「mapString.put(splitString [0],1);」也嘗試跳過循環的一次迭代。 2.-我留下了舊的代碼,不需要修剪,因爲我對原始語句進行了拆分。關於你的第二條評論我可以對輸出進行排序,但是我不需要在地圖中保留所有我只需要維護排名前三的鍵值。 – Dr3ko