可以使用不同索引的数据结构

时间:2020-03-11 15:23:31

标签: java data-structures

我想知道Java中是否存在允许用户使用不同索引的数据类型/结构。因此,这就像一个哈希映射(例如HashMap<String, Integer>),而不仅仅是使用字符串作为索引,它还可以允许用户使用String或(例如)Float,在其中或可以使用。例如:

<"Hello", _> -> 123
<"Hello", 10.5f> -> 123
<_, 10.5f> -> 123 

<"World, _> -> 456

我尝试创建一个自定义对象,但是发现它需要覆盖“ HashCode”函数,因此它不起作用。

2 个答案:

答案 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

相关问题