【试题要求】
保存数据
bus.put(“key1”,”key2” ,value1);
bus.put(“key1”,”key2”,”key3”,value2);
注意每个key下面都可以储存数据
获取数据(key必须按照保存value时候key的顺序)
let value1=bus.get(“key1”,”key2”);
let value2=bus.get(“key1”,”key2”,”key3”);
清理数据
bus.remove(“key1”). //把key1下面的所有节点删除
已自行解决,任何评论都没有采纳。
用List实现 List<自定义对象>
自定义对象中两个属性
List keylist; //存多个key
Object value; // 存值
提供可以直接提供构造传值的方法
对象(Object value,String key1,String...keys)key1是保证一定有一个Key,之后的key可以为可变长度,要多少就可以写多少
之后把所有传进来的key全部存进List属性中即可
首先数据结构key - value 这种字典结构 key 是唯一的不能重复 就像字典里的目录你知道了目录可以直接翻到相对应的位置,
所以 按照你的需求这种数据结构是不能满足你的需求,可以搭配list来将进行数据的封装 你的数据多个key 对应一个value? 那么你把value 变为key 对应的值为list即可
多key,key用list;单key不重复用set
用Map>简单封装就可以解决你的问题
如果是我,我首先想到的是这种结构,然后封装起来
map
{
key1:{
default:xxx,
key2:{
default:xxx,
}
},
key1:{
default:xxx,
key2:{
default:xxx,
}
}
}
import java.util.HashMap;
import java.util.Map;
public class LocalCache {
private final String connector = "||";
private final String reg = "\\|\\|";
private Map<String, String> cache = new HashMap<String, String>();;
public void put(String... params){
if(params == null || params.length < 2){
return ;
}
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < params.length - 1; i++) {
stringBuffer.append(params[i]).append(connector);
}
cache.put(stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length()).toString(), params[params.length - 1]);
}
public String get(String... keys){
if(keys == null || keys.length == 0){
return null;
}
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < keys.length; i++) {
stringBuffer.append(keys[i]).append(connector);
}
return cache.get(stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length()).toString());
}
public void remove(String key){
for (String cacheKey : cache.keySet()) {
String[] keyArray = cacheKey.split(reg);
if(keyArray[0].equals(key)){
cache.remove(cacheKey);
}
}
}
}
弹性k-v最简单的一种原型就是把前面的key都拼成一个单key