gpt4 book ai didi

java - 具有多个键的映射

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:54 25 4
gpt4 key购买 nike

<分区>

我正在尝试实现类似

的 map
Map<<key1, key2>, List<value>>

Map 应该包含 2 个键,对应的值是一个列表。我想在同一个列表中添加记录if alteast one key value is equal例如考虑以下记录

R1[key1, key2]
R2[key1, null/empty] - Key1 is equal
R3[null/empty, key2] - Key2 is equal
R4[key1, key2] - Key1 and Key2 both are equal.

所有的都应该插入到同一个列表中

Key = <Key1,Key2> 
Value = <R1, R2, R3, R4>

我不能使用 Guava tablecommons MulitKeyMap (不想为此包括整个图书馆)。

我尝试实现一个类(我可以将其用作键),该类同时具有 key1key2 作为属性,但实现了一个有效的哈希码,它不考虑 key1 和 key2 似乎有点(或可能很多)棘手

public class Key {
private int key1;
private int key2;

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
// Cant include key1 and key2 in hashcode
/* result = prime * result + key1;
result = prime * result + key2;*/
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Key other = (Key) obj;
if(key2 and other.key2 both not blank/null){ // pseudo code
if (key2 == other.key2)
return true;
}
if(key1 and other.key1 both not blank/null){ //pseudo code
if (key1 == other.key1)
return true;
}
return true;
}

}

如果我对所有记录使用相同的哈希码,它会起作用,但它会影响性能,因为我有数千条记录。


编辑:
我不能使用嵌套 map ,例如

Map<key1, Map< key2, List<value>>>

因为有些记录可能只有一个键。

  R1[key1, key2]     - Have both keys
R2[key1, null/empty] - Key1 is equal
R3[null/empty, key2] - Key1 is missing and key2 is equal

这里 R3 没有 key1,因此不能插入与 R1 和 R2 相同的位置


编辑 2:

我也希望维持干预秩序。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com