我們都知道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();