HashMap如何插入重复的键值

Posted preferlin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap如何插入重复的键值相关的知识,希望对你有一定的参考价值。

我们都知道hashmap键值是不能重复的,但在我的实际工作过程中,我需要循环一个子教学班数组,把同一个教学班下的子教学班筛选出来,以教学班Id作为主键,当我查询教学班的时候,就能根据教学班的ID查询到所有的子教学班,那么我是如何实现的呢?如下图:定义一个map

/**
* 自定义map
* 用于存取键值重复数据
* @param <K>
* @param <V>
*/
private class TempMap<K,V> {
private HashMap<K, ArrayList<V>> data = new HashMap<>();
public boolean add(K k, V v) {
     // 判断是否存在key
if (data.containsKey(k)) {
data.get(k).add(v);
} else {
ArrayList<V> list = new ArrayList<>();
list.add(v); data.put(k,list);
}
return true;
}
public HashMap<K,ArrayList<V>> getData() {
return data;
}
}

// 调用
List<TeachingClassReadRangeEntity> teachingClassReadRangeEntities = redisInfoMapper.selectReadRange();
TempMap<String, TeachingClassReadRangeEntity> readRangeMap = new TempMap<>();
for(TeachingClassReadRangeEntity teachingClassReadRangeEntity : teachingClassReadRangeEntities){
readRangeMap.add(teachingClassReadRangeEntity.getTeachingClassId(), teachingClassReadRangeEntity);
}
Map<String, ArrayList<TeachingClassReadRangeEntity>> cacheReadRangeMap = new HashMap<>();
cacheReadRangeMap = readRangeMap.getData();

以上是关于HashMap如何插入重复的键值的主要内容,如果未能解决你的问题,请参考以下文章

HashMap详解

java集合系列之HashMap源码

Java标准库中的键值,键值类[重复]

Java中HashMap和LinkedHashMap以及TreeMap的区别

Java HashMap原理

如何从哈希图中找到最高的键值