要求通过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下面的所有节点删除

0

8个回答

已自行解决,任何评论都没有采纳。

0

用List实现 List<自定义对象>

自定义对象中两个属性
List keylist; //存多个key

Object value; // 存值

提供可以直接提供构造传值的方法
对象(Object value,String key1,String...keys)key1是保证一定有一个Key,之后的key可以为可变长度,要多少就可以写多少
之后把所有传进来的key全部存进List属性中即可

0
qq_40634961
qq_40634961 如果需要严谨一些,避免key重复的话对象内部可以使用set存
11 个月之前 回复

首先数据结构key - value 这种字典结构 key 是唯一的不能重复 就像字典里的目录你知道了目录可以直接翻到相对应的位置,
所以 按照你的需求这种数据结构是不能满足你的需求,可以搭配list来将进行数据的封装 你的数据多个key 对应一个value? 那么你把value 变为key 对应的值为list即可

0

多key,key用list;单key不重复用set

0

用Map>简单封装就可以解决你的问题

0

如果是我,我首先想到的是这种结构,然后封装起来
map
{
key1:{
default:xxx,
key2:{
default:xxx,
}
},
key1:{
default:xxx,
key2:{
default:xxx,
}
}
}

0
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);
        }
    }
}
}
0

弹性k-v最简单的一种原型就是把前面的key都拼成一个单key

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python中字典的key要求
前记     python中什么对象不能作为字典的key:有__hash__方法可以做字典的key,没有则不能作为字典的key;     除了list、dict、set和内部至少带有上述三种类型之一的tuple之外,其余对象均可作为字典的key; 一、list做key示例:     a = [1,2,3]     d = {a:a}     报错:     TypeError: unh...
std::map的key有什么要求?
以前一直都只用过内置的std::string类型做map的key。现在由于某种原因,我需要使用自定类型做key。这个类型含有如下三个数据:一个string的名字,一个vector的3元数字矢量,一个4元数(可以看成是4个数的矢量)。这三个数据如果一样,表明是一个key。rn[code=C/C++]rnclass MyKey rnprotected:rn std::string name;rn Ogre::Vector3 position;rn Ogre::Quaternion orientation;rn;rn[/code]rn那么,vector的key需要哪些条件吗?要提供哪些操作符的重载?
hashMap中key放自定义类,自定义类的要求~
Java中得hashMap,有一个key和value键值对~现在这个key,我要放一个我自己定义的类,如MyClass 对于这个我自己定义的类,有什么要求?
std::map对模板参数key的要求
需要由多个变量来定位一个值,也就是说Key由多个变量组成  原先想用多维数组查找,但可能生成的多维数组比较大,就想用map  #pragma warning(disable:4786)  #include "stdafx.h"  #include   using namespace std;  typedef struct _T  {  int a;  int b
python 实现列表的排序,要求支持逆序和指定标准(key)
def sort(lt, key=None, reverse=False): n = len(lt) for i in range(n-1): for j in range(i+1, n): # 确定是否交换的标志位 if key: is_swap = (key(lt[i]) &amp;lt; ...
ftok key值冲突
ftok生成key值的陷阱
多key值单value的map
在跟某平台单点对接的时候,需要强制退出,这个时候需要个集合来存储Session ,在本系统内是使用的用户名userName,但是平台传递的是ssoToken,这个时候需要 通过userName 和ssoToken 都能找到这个Session对象.于是就用比较笨的办法实现了 如下所示: package com.XXX; import java.util.*; /** * Cr...
redis大Key多Key分拆方案
文章目录背景单个简单的key存储的value很大该对象需要每次都整存整取该对象每次只需要存取部分数据hash、 set、zset、list 中存储过多的元素一个集群存储了上亿的keykey 本身就有很强的相关性key 本身没有相关性 背景 业务场景中经常会有各种大key多key的情况, 比如: 1: 单个简单的key存储的value很大 2: hash, set,zset,list 中存储过多的元...
js获取 对象的所以key
{10001:[11001,10001]}这个对象怎么解析 const keys=Object.keys(data) keys获取所有的 10001 前面的
关联容器(map和set,支持高效的关键字查找和访问。key-value相对应,key起到索引的作用,value是和key相关联的数据)
使用关联容器 map的使用 map的意义在于快速找到与key对应的数据,并进行相应的操作 map&amp;lt;string, size_t&amp;gt; word_count; //string 到size_t的空map string word; while(cin&amp;gt;&amp;gt; word) ++word_count[word]; //此时的就是value的值进行了加操作 for(const a...
写个支持多重名section和key的读取…
最近写了个读取ini配置文件的c++工具,它支持多重名section和key的读取 读取的配置文件如下: # This is a comment [common] name = proxy port = 5588 [default_server] check_user = rpl check_password = 123 master_backup = on [server] alisa =
基于key验证的多主机相互访问
选一台主机生成公钥和私钥对 ssh-keygen -t rsa -P '' -f "~/.ssh/id_rsa" 在当前主机复制公钥,生成 authorized_keys 文件 ssh-copy-id 192.168.56.101 将此主机的整个 .ssh 目录复制到其他主机上 #!/bin/bash user=$2 password=$3 while read ip;do exp...
inf与要求的形式不一样
buffalo lpc4-clx网卡驱动在XP下安装出现如图所示错误,怎么也装不上,什么原因?驱动在日本官网下载。http://buffalo.melcoinc.co.jp/download/driver/lan/lannavi.html#106rn急。别人的老dell本。很郁闷。xp为雨林木风Ghost版
VF课程设计形式要求
VF课程设计书面报告形式要求.包括目录等大标题!
PRIMARY KEY ,UNIQUE KEY ,KEY
CREATE TABLE `ecs` (rn `order_id` mediumint(8) unsigned NOT NULL auto_increment,rn `order_sn` varchar(20) NOT NULL default '',rn `user_id` mediumint(8) unsigned NOT NULL default '0',rn `order_status` tinyint(1) NOT NULL default '0',rn PRIMARY KEY (`order_id`),rn UNIQUE KEY `order_sn` (`order_sn`),rn KEY `user_id` (`user_id`),rn KEY `order_status` (`order_status`),rn ) TYPE=MyISAM;rnrn 这里ecshop里的一张表,请问这里的rnPRIMARY KEY ,UNIQUE KEY ,KEY 分别是什么用处?有点糊涂。谢谢
redis key-value中key值大小的界定 ??
redis不少文档中说key值不宜过大,但是这个大小的范围是多少?rn是字符串长度,还是数值大小,多长或者多大算大呢?rnrn还有提到,如果key值大,而value值小,不宜使用redis。rn1234567 000rn这种算是key值大,value小吗?
利用key,value形式储存对象的类(Map,HashMap)
以前曾经写过一个flash版的HashMap,不过那时对flash的还有很多不是很了解,觉得实现得很不好,后来重新写了一个(没办法,工作的需要的)这次的还是一样,模仿java的Map类的功能写,也是有了Map接口和实现类HashMap,现在把它贴出来让大家共享一下这是接口 :Map/** * @(#)Map.as *  * @author  soda  E-mail:junaisy@1
关于usb key和bootstrap的冲突
今日开发个MIS需要usb key硬件配合
redis如何解决key冲突?
1、业务隔离 不同的业务使用不同的redis集群,或者协议使用redis的不同db。 2、良好的Redis Key的设计 格式:业务标识:系统名称:模块名称:关键词简写 比如:保险:用户管理:用户申请:手机号 Redis Key:bx:um:reg:mobile 以上在实际的生产环境中,应该同时存在。 转载于:https://www.cnblogs.com/mao...
JSTL通过数值key访问map的陷阱
http://java.sun.com/jsp/jstl/core" prefix="c"%> http://java.sun.com/jsp/jstl/functions" prefix="fn"%> %@page contentType="text/html;charset=gb2312"%> %@page import="java.util.*"%> private static
ftok产生的key冲突了
最近遇到一个问题,在用户b下创建共享内存失败,跟踪代码发现shmget的errno为17(要创建的这个共享内存已经存在了),可是在该用户下通过ipcs查看确实没有共享内存啊,后来发现,用户a下已经创建的共享内存与用户b要创建的共享内存冲突了,准确的说是key值冲突了,key值是通过ftok函数生成的。rnrn上网查询了一个,ftok是根据文件i节点和调用ftok时的id值产生的,而且还给出了例子加以说明,如下:rn在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。如指定文件的索引节点号为65538,rn换算成16进制为 0x010002,而你指定的ID值为38,换算成16进制为0x26,则最后的key_t返回值为0x26010002。rnrnb用户下有目录trnlog,通过ls -i命令查看tt的i节点为 2228246rnftok 得到的key值为 16908310 <==> 0x1020016rnrna用户下有文件comm,通过ls -i命令查看xx的i节点为 2097174rnftok 得到的key值为 16908310 <==> 0x1020016rnrn问题来了:rn1)两个用户下的文件i节点不同,通过ftok函数得到的key值是相同的,为什么呢?rn2)用户a创建的共享内存对其他用户有影响吗?也就是说进程创建共享内存的时候系统会全系统检查该key值有没有创建过共享内存?rn小弟恳请大神点拨说明,感谢万分!rn
注册表Key访问重定向
为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...
将数据形式转换成要求长度的字符串
在程序使用中,经常会需要将数据(16进制或10进制)按要求转换成 字符串,且对长度有要求。不足有左边补0
key形式哈希表的线性探测
一、什么是key形式的哈希表 简单的说就是通过key的来查找key的值 二、线性探测 简单的来说就是遇到哈西冲突就查找下一个位置,看位置上是否有数据,假如有则继续查找,假如没有则将数据放入到当前位置 局限性:引发洪水式的冲突,冲突越来越多,找的越来越慢(因为找到的是一片冲突,找到空才停下来),效率低 二、定义状态数组和仿函数 1、定义状态数组 由于哈希表中每个位置的传值不知道设置为什
通过配置文件的key得值
public static String TM_API_SERVER_HOST = PropertiesUtil.getProperty("config/im.properties", "TIM_HOST"); public static String getProperty(String resource, String key) { Properti...
设计一个key-value哈希表结构,要求key可以是任意类型
设计一个key-value哈希表结构,要求key可以是任意类型,包括基本数据类型(如int,double,char等)和自定义类型(struct,class等),不能使用STL中的类。
react属性传值 key:value形式
 key:value传值 步骤: 1、通过&amp;lt;Demo obj={obj} arr={arr} name=&quot;hello&quot; str=&quot;hi&quot;/&amp;gt; &amp;lt;Demo obj={obj} arr={arr} name=&quot;hello&quot; str=&quot;hi&quot;/&amp;gt; 2、通过{this.props.name}接收   &amp;lt;!DOCTYPE html&amp;gt; &am
zabbix 通过key 获取
zabbix:/root# zabbix_get -s 192.168.2.224 -k "perf_counter[\Processor(_Total)\% Processor Time]" 63.146868 zabbix:/root# zabbix_get -s 192.168.2.224 -k "vm.memory.size[free]" 16163495936 zabbix:/roo
通过value找key
NSMutableDictionary *dic=[[NSMutableDictionary alloc] init];                  [dic setValue:@"abc" forKey:@"1"];         [dic setValue:@"你好" forKey:@"2"];         [dic setValue:@"哈哈" forKey:@"3"];
git出现权限问题(key)
Permission denied (publickey). fatal: Could not read from remote repository.  Please make sure you have the correct access rights and the repository exists. 类似上述问题,解决途径:https://segmentfault.com/q/101
雷特2.35单Key注册机
雷特2.35单Key注册机,使用注册机可以给雷特字幕授权使用,支持雷特2.35
要求帮忙,多谢了
请问在access2000中有没有什么方法可以将一个文本类型的字段内容转换成日期类型,诸如将一个文本字段中的”20020512“转换成02-05-12日期类型
KeY……
刚刚结束了spin的lab,马上要开始的是KeY的, 希望不要太变态……留下地方给KeY的简单总结
key
怎么用SQL语句设置表的主键及外键.(两个键功能的实现)
卡巴斯基 key kav7 key
卡巴斯基 key kav7 key卡巴斯基 key kav7 key卡巴斯基 key kav7 key
手机key手机key
手机key手机key手机key手机key
key不愧是“key”!
原先还不知道key有这么大的决定性作用,尤其是外键,在找表与表之间关联关系的时候太重要了,这两天在公司弄三个表之间删除拷贝连接也算是经典案例了,以后一定要第一反应先用key找关联关系,另外就是更加坚定了一定要弄清楚弄懂再去做任务,加油!
卡巴斯基 key kis8 key
卡巴斯基 key kis8 key卡巴斯基 key kis8 key卡巴斯基 key kis8 key卡巴斯基 key kis8 key卡巴斯基 key kis8 key
msdn key msdn key
keykeykeykeykeykeykeykeykeykeykeykey
远程连接出现要求的函数不受支持解决方案
文章目录原始报错框问题原因解决方案第一步:打开策略组配置第二步:新建策略组 原始报错框 问题原因 win10系统家庭版策略组部分缺失,因安全问题被拒绝! 解决方案 配置安全组 第一步:打开策略组配置 按下win+r 输入regedit 第二步:新建策略组 按照下面路径,依次寻找 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curren...