面试题答案
一键面试TreeMap应用场景及举例
- 应用场景:当需要对键进行排序时使用TreeMap。它会按照键的自然顺序(如果键实现了Comparable接口)或者通过传入的Comparator进行排序。常用于需要按键有序遍历数据的场景,例如统计单词出现次数并按字母顺序输出。
- 举例:
import java.util.Map;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
Map<String, Integer> wordCount = new TreeMap<>();
String[] words = {"apple", "banana", "apple", "cherry", "banana"};
for (String word : words) {
wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
}
for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
WeakHashMap应用场景及举例
- 应用场景:当希望在内存不足时,Map中的键值对能被自动回收时使用WeakHashMap。适用于缓存场景,其中缓存数据可以在内存紧张时被释放,避免内存泄漏。
- 举例:
import java.util.Map;
import java.util.WeakHashMap;
public class WeakHashMapExample {
public static void main(String[] args) {
Map<String, String> weakCache = new WeakHashMap<>();
String key = new String("cacheKey");
weakCache.put(key, "cacheValue");
key = null;
System.gc();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(weakCache.get("cacheKey"));
}
}
在上述WeakHashMap例子中,当key
被设为null
后,经过垃圾回收,WeakHashMap
中的键值对可能会被回收,再次获取值时可能为null
。