Java Map和字典的介绍
Map是Java中一个基础的数据结构,用于存储一组key-value的映射关系。它类似于字典,可以通过key(键)来获取value(值)。Map接口是Java集合框架中的一员,提供了一系列的实现类,包括HashMap、TreeMap等等。 Dictionary是Java早期提供的一种数据结构,也是用于存储key-value对的映射关系。它和Map概念类似,但是Dictionary是一个抽象类,只能被继承而不能被实例化,也不支持null值的key和value。Java社区建议使用Map代替Dictionary进行编程。 下面我们来看一些使用Map的例子:
使用Java Map实现Word Count
import java.util.*; public class WordCount { public static void main(String[] args) { String text = "Hello World, this is a world of Java World"; String[] words = text.split(" "); MapwordCount = new HashMap<>(); for (String word : words) { if (wordCount.containsKey(word)) { int count = wordCount.get(word); wordCount.put(word, count+1); } else { wordCount.put(word, 1); } } System.out.println(wordCount); } }
使用Java Map实现LRU Cache
import java.util.*; public class LRUCache{ private final int capacity; private final Map cache; public LRUCache(int capacity) { this.capacity = capacity; this.cache = new LinkedHashMap (capacity, 0.75f, true) { @Override protected boolean removeEldestEntry(Map.Entry eldest) { return size() >capacity; } }; } public synchronized V get(K key) { return cache.get(key); } public synchronized void put(K key, V value) { cache.put(key, value); } public synchronized void clear() { cache.clear(); } public synchronized int size() { return cache.size(); } @Override public synchronized String toString() { return cache.toString(); } }
在上面的代码中,我们使用了LinkedHashMap作为Map的实现类,并且重写了removeEldestEntry方法,实现LRU缓存策略。其中LinkedHashMap中的accessOrder参数设置为true,表示按照访问顺序排序。