MST

星途 面试题库

面试题:Java中TreeMap与WeakHashMap使用场景的基础区分

请简述在Java中TreeMap和WeakHashMap各自适用于什么样的基本应用场景,并举例说明。
11.2万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

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