要求通过key-value的形式储存和访问数据,但单key太容易出现冲突了,所以要求支持多key。

【试题要求】
保存数据
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