它们是否为编写我自己的哈希映射数据结构带来了好处,而不是在java中使用像hashmap这样的预编写类。
背景。 我正在编写一个spring应用程序,它需要能够映射单个键以映射到两个值的数据结构。
我现在能想到的现有好处将是: - 可以包含更多方法,如swap(交换值1和2) - 更好地控制散列函数 - 一般控制更多
想知道: - 如果他们在性能或复杂性方面有任何缺陷 - 或者如果编写我自己的数据结构有任何意义
感谢您花时间阅读。
编辑: 如果它有帮助。 我只需要快速访问速度(像get和contains这样的方法) 对于" put"的方法,花费的时间可能会长一些 关于我应该做什么的任何建议?
答案 0 :(得分:2)
保持简单:使用值类型为简单类的HashMap
来保存两个值,例如(为简单起见,我假设键,两个值都是String):
class Pair {
private String a;
private String b;
public Pair(String a, String b) {
this.a = a;
this.b = b;
}
public String getA() {
return a;
}
public String getB() {
return b;
}
public void swap() {
// Note: Not threadsafe
String tmp = a;
a = b;
b = tmp;
}
public boolean equals(Object o) {
return o instanceof Pair
&& Objects.equals(a, ((Pair)o).a
&& Objects.equals(b, ((Pair)o).b;
}
public int hashCode() {
return Objects.hash(a, b);
}
}
Map<String, Pair> map = new HashMap<>();
答案 1 :(得分:0)
如果不使用java.util
软件包,您可能会错过经过良好审核,经过验证且经久耐用的框架。没有冒犯,但你不太可能想出更好的设计和实现,特别是作为Java的核心API的一部分,无错误和优化。相反,使用存在的内容并编写自己的小方法,扩展现有的HashMap,或者找到另一个开源变体(例如,可能来自Apache FastHashMap)以获得额外的必需功能。