我想知道Java中是否存在允许用户使用不同索引的数据类型/结构。因此,这就像一个哈希映射(例如HashMap<String, Integer>
),而不仅仅是使用字符串作为索引,它还可以允许用户使用String或(例如)Float,在其中或可以使用。例如:
<"Hello", _> -> 123
<"Hello", 10.5f> -> 123
<_, 10.5f> -> 123
<"World, _> -> 456
等
我尝试创建一个自定义对象,但是发现它需要覆盖“ HashCode”函数,因此它不起作用。
答案 0 :(得分:1)
惯例是使用新的 specific 索引创建单独的数据结构。
这意味着(在Java中)您现在必须存储两次数据,但是在某些情况下,这种情况更为可取。
或者在实践中,用于多个数据结构以对不同的键进行索引的设计/需求通常意味着有人想要一个关系数据库,而不是Java中的任何东西,这可能是最干净的方法。
答案 1 :(得分:0)
一种更脏的方法是将所有可能的键串化和连接起来,例如:
float number = 10.5f;
String key = "Hello" + number;
map.put(key, 123);
更简洁的解决方案是设计一个类,该类将成为哈希图中的键。在这种情况下,您将需要覆盖hashCode()
和equals()
-由于HasmMap的实现,这是必需的。请参阅以下文章:Design good key for hashmap