树状数据结构的后台缓存方式

本文介绍了在处理树状数据结构时,如何利用数据库中的父节点ID字段,并通过自定义的MultiKeyMap实现数据的后台缓存。这种缓存方式适用于数据量不大、更新不频繁的场景,能够方便地根据父节点获取子节点列表。
摘要由CSDN通过智能技术生成

我们经常用到一些树状的数据结构,在数据库中通常是用一个字段来记录其父节点的ID。在生成树状结构时,通常使用递归遍历的方法。在某些场合下,如果数据量不大,且更新不是很频繁时,可以将数据库的数据缓存到内存中。下面用一个自定义的特定的Map来保存这些数据:

MultiKeyMap.java

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 
 * @author eyes1842
 *
 * @param <K> Key type
 * @param <V> Value type
 */
public class MultiKeyMap<K,V>{
	
	private Map<K,MultiKeyMap.Entry<K, V>> map = new HashMap<K,MultiKeyMap.Entry<K, V>>();
	
	public V put(K pkey, K fkey, V value) {
		MultiKeyMap.Entry<K,V> entry = new MultiKeyMap.Entry<K,V>(fkey, value);
		map.put(pkey, entry);
		return value;
	}
	
	public V get(K pkey) {
		MultiKeyMap.Entry<K,V> entry = map.get(pkey);
		if(entry!=null&&!entry.isEmpty())
			return entry.getValue();
		else
			return null;
	}
	
	public V 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值