Java 中的 LimitedTreeMap
LimitedTreeMap in Java
我想要一个 map
是有序的,但同时具有最大数量的元素。例如,如果我在地图中有三个键为 1
、2
、3
的元素,并且我将 4
添加到地图中,地图现在应该包含 2
,3
,4
(只使用最大的三个值)。我怎样才能做到这一点。我应该如何实现 put
方法。欢迎任何帮助:)
class LimitedTreeMap<K extends Number, V> extends TreeMap<K, V> {
int limitSize;
public LimitedTreeMap(int limitSize) {
this.limitSize = limitSize;
}
@Override
public V put(K key, V value) {
// Add logic for the desired behaviour
return super.put(key, value);
}
}
拿到钥匙,
找到最小的,
检查您要添加的密钥是否更大并且应该添加,
添加新密钥(如有必要)
当且仅当地图现在包含三个以上元素时,才移除最小键
显然,如果您希望地图仍然 return 在删除键后添加到其中的三个最大键,这将不起作用。如果你也想要它,你应该考虑添加所有键(排序)并将 get
修改为从不 return 一个不在前三个中的键的值(以及迭代器,删除等,如果你也不希望他们访问前三个之后的任何元素)。
如果达到限制,删除最低键。
class LimitedTreeMap<Long, V> extends TreeMap<Long, V> {
int limitSize;
public LimitedTreeMap(int limitSize) {
this.limitSize = limitSize;
}
@Override
public V put(Long key, V value) {
// Add logic for the desired behaviour
V v = super.put(key, value);
if (this.size() > limitSize)
this.pollFirstEntry();
return v;
}
}
我想要一个 map
是有序的,但同时具有最大数量的元素。例如,如果我在地图中有三个键为 1
、2
、3
的元素,并且我将 4
添加到地图中,地图现在应该包含 2
,3
,4
(只使用最大的三个值)。我怎样才能做到这一点。我应该如何实现 put
方法。欢迎任何帮助:)
class LimitedTreeMap<K extends Number, V> extends TreeMap<K, V> {
int limitSize;
public LimitedTreeMap(int limitSize) {
this.limitSize = limitSize;
}
@Override
public V put(K key, V value) {
// Add logic for the desired behaviour
return super.put(key, value);
}
}
拿到钥匙, 找到最小的, 检查您要添加的密钥是否更大并且应该添加, 添加新密钥(如有必要) 当且仅当地图现在包含三个以上元素时,才移除最小键
显然,如果您希望地图仍然 return 在删除键后添加到其中的三个最大键,这将不起作用。如果你也想要它,你应该考虑添加所有键(排序)并将 get
修改为从不 return 一个不在前三个中的键的值(以及迭代器,删除等,如果你也不希望他们访问前三个之后的任何元素)。
如果达到限制,删除最低键。
class LimitedTreeMap<Long, V> extends TreeMap<Long, V> {
int limitSize;
public LimitedTreeMap(int limitSize) {
this.limitSize = limitSize;
}
@Override
public V put(Long key, V value) {
// Add logic for the desired behaviour
V v = super.put(key, value);
if (this.size() > limitSize)
this.pollFirstEntry();
return v;
}
}