LinkedHashMap从头开始删除元素
时间: 2023-11-16 12:07:25 浏览: 53
要从LinkedHashMap的头部开始删除元素,可以使用`removeEldestEntry`方法结合重写`removeEldestEntry`方法来实现。下面是一个示例代码:
```java
import java.util.LinkedHashMap;
import java.util.Map;
public class Example {
private static final int MAX_ENTRIES = 5;
public static void main(String[] args) {
LinkedHashMap<Integer, String> map = new LinkedHashMap<Integer, String>(MAX_ENTRIES, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<Integer, String> eldest) {
return size() > MAX_ENTRIES;
}
};
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
map.put(4, "Four");
map.put(5, "Five");
System.out.println("Initial LinkedHashMap: " + map);
map.put(6, "Six");
System.out.println("After adding entry 6: " + map);
map.get(3); // 访问元素3,将其移至末尾
System.out.println("After accessing entry 3: " + map);
map.put(7, "Seven");
System.out.println("After adding entry 7: " + map);
}
}
```
输出结果如下:
```
Initial LinkedHashMap: {1=One, 2=Two, 3=Three, 4=Four, 5=Five}
After adding entry 6: {2=Two, 3=Three, 4=Four, 5=Five, 6=Six}
After accessing entry 3: {2=Two, 4=Four, 5=Five, 6=Six, 3=Three}
After adding entry 7: {4=Four, 5=Five, 6=Six, 3=Three, 7=Seven}
```
在这个例子中,我们使用了`LinkedHashMap`的构造方法来指定最大条目数为5,并且设置了accessOrder参数为true,这样每次访问元素后都会将其移至末尾。然后我们重写了`removeEldestEntry`方法,当LinkedHashMap的大小超过最大条目数时返回true,从而删除头部的元素。