淘先锋技术网

首页 1 2 3 4 5 6 7

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 Mapcache;
public LRUCache(int capacity) {
this.capacity = capacity;
this.cache = new LinkedHashMap(capacity, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entryeldest) {
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,表示按照访问顺序排序。