我需要一个行为类似于Map的数据结构,但使用多个(不同类型的)键来访问其值.
(我们不要太笼统,让我们说两把钥匙)
钥匙保证是独一无二的.
就像是:
MyMap<K1,K2,V> ...
Run Code Online (Sandbox Code Playgroud)
使用以下方法:
getByKey1(K1 key)...
getByKey2(K2 key)...
containsKey1(K1 key)...
containsKey2(K2 key)...
Run Code Online (Sandbox Code Playgroud)
你有什么建议吗?
我唯一能想到的是:
编写一个内部使用两个Maps的类.
编辑
有些人建议我使用元组,对或类似作为Java Map的键,但这对我不起作用:
如上所述,我必须能够通过两个键中的一个来搜索值指定.
地图使用密钥的哈希码并检查它们的相等性.
我处理一个包含两列mvv和count的数据帧.
+---+-----+
|mvv|count|
+---+-----+
| 1 | 5 |
| 2 | 9 |
| 3 | 3 |
| 4 | 1 |
Run Code Online (Sandbox Code Playgroud)
我想获得两个包含mvv值和计数值的列表.就像是
mvv = [1,2,3,4]
count = [5,9,3,1]
Run Code Online (Sandbox Code Playgroud)
所以,我尝试了以下代码:第一行应该返回一个python列表行.我想看到第一个值:
mvv_list = mvv_count_df.select('mvv').collect()
firstvalue = mvv_list[0].getInt(0)
Run Code Online (Sandbox Code Playgroud)
但是我收到第二行的错误消息:
AttributeError:getInt
雅虎开发了Pulsar,pub-sub消息系统,并将其作为开源软件.它现在是Apache的孵化项目.由于卡夫卡也用于同一目的.想知道,卡夫卡超过Pulsar的主要加分和减分.
今天我开始在简单操作上遇到错误,比如创建小文件vim
,bash完成也开始抱怨.
结果如下df -h
:
vagrant@machine:/vagrant$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 38G 249M 100% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.0G 12K 2.0G 1% /dev
tmpfs 396M 396K 395M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user
overflow 1.0M 148K 876K 15% /tmp
192.168.50.1:/Users/nha/repo/assets 233G 141G 93G 61% /var/www/assets
vagrant 233G 141G 93G 61% /vagrant
Run Code Online (Sandbox Code Playgroud)
所以显然/
没有空间了?因为我在其他文件系统中有空间(或者我误读了什么),这不是很奇怪吗? …
如何从Javascript调用ClojureScript代码(不是相反!).
已经可以从Java调用Clojure,但我不知道如何在ClojureScript中执行等效操作.
鉴于:
(def my-vec [{:id 0 :a "foo" :b "bar"} {:id 1 :a "baz" :b "spam"}
{:id 2 :a "qux" :b "fred"}])
Run Code Online (Sandbox Code Playgroud)
如何以惯用方式更新my-vec中的项目以:id=1
获取值:a="baz2"
和:b="spam2"
?
*:我认识到我实际上不会更新my-vec,但实际上返回了一个与my-vec相同的新向量,除了替换值.
在git中进行合并时,我意外地覆盖了另一个开发者的更改.我知道如何撤消上次提交,即我的合并.
我的问题是我已经将这些提交推送到我们的在线存储库中.因此,如果我回滚,再次进行合并合并(这次是他的修改)并尝试再次推送它,会发生冲突(对吗?).处理这个问题的方法是对的?
编辑 澄清一下,情况如下:
commit A --- commit B --- merge
Run Code Online (Sandbox Code Playgroud)
但在合并中,我不小心丢弃了在提交A中进行的修改.这不是一个真正的问题.我知道如何在本地进行更改(撤消合并).但我的问题是整个事情已被推入我们的共享存储库(想想github或bitbucket).
我在node.js工作.我的应用程序通过node_redis
模块与Redis交互.我正在使用mocha和sinon自动测试我的应用程序.我的应用程序看起来像这样:
...snip
var redisClient = redis.createClient(redisPort, redisHost);
var someValue = redisClient.get("someKey");
return someValue;
....
Run Code Online (Sandbox Code Playgroud)
我想将调用存根到redisClient.get().要做到这一点,我还需要将调用存根到redis.createClient() - 我想......这是我的测试代码:
...
var redis = require("redis");
var redisClient;
...
sinon.stub(redisClient, 'get').returns("someValue");
sinon.stub(redis, "createClient").returns(redisClient);
...
assert.equal(redis_client_underTest.call_to_redis(), "someValue");
...
Run Code Online (Sandbox Code Playgroud)
测试失败了 AssertionError: false == "someValue"
我该如何存根redisClient
,或者这甚至可能?
clojure ×3
javascript ×2
apache-kafka ×1
apache-spark ×1
css ×1
git ×1
html ×1
java ×1
mocha.js ×1
node.js ×1
pyspark ×1
python ×1
redis ×1
sinon ×1
vagrant ×1
virtualbox ×1