สมมติมี String:
String myStr = "thisisit";
นับ Occurrences ด้วย HashMap Loop ผ่าน String ใช้ containsKey() และ charAt()
HashMap<Character, Integer> hashMap = new HashMap<>();
for (int i = myStr.length() - 1; i >= 0; i--) {
if (hashMap.containsKey(myStr.charAt(i))) {
int count = hashMap.get(myStr.charAt(i));
hashMap.put(myStr.charAt(i), ++count);
} else {
hashMap.put(myStr.charAt(i), 1);
}
}
ตัวอย่างโค้ดเต็ม
import java.util.HashMap;
public class Demo {
public static void main(String[] args) {
String myStr = "thisisit";
System.out.println("String = " + myStr);
HashMap<Character, Integer> hashMap = new HashMap<>();
for (int i = myStr.length() - 1; i >= 0; i--) {
if (hashMap.containsKey(myStr.charAt(i))) {
int count = hashMap.get(myStr.charAt(i));
hashMap.put(myStr.charAt(i), ++count);
} else {
hashMap.put(myStr.charAt(i), 1);
}
}
System.out.println("Counting occurrences of each character = " + hashMap);
}
}
ผลลัพธ์
String = thisisit
Counting occurrences of each character = {s=2, t=2, h=1, i=3}
วิธีอื่น (Java 8+ Streams):
Map<Character, Long> freq = myStr.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.groupingBy(c -> c, Collectors.counting()));
ประโยชน์: Frequency Analysis, Anagram Detection, Character Statistics, Compression Algorithms