Java 如何设置唯一标识符的映射?
我们有一个数据库表,该表上的唯一索引是一个复合键(String,int,int)。我想在Java类中添加一个字段来保存这个键。我试过:Java 如何设置唯一标识符的映射?,java,Java,我们有一个数据库表,该表上的唯一索引是一个复合键(String,int,int)。我想在Java类中添加一个字段来保存这个键。我试过: Map<String, Integer, Integer> Map 但是IDE告诉我我不能这样做,因为地图就是地图K,V 我的问题是,表示此键的最佳方式是什么?Map Map<String, Integer, Integer> 这不起作用,因为Map只接受两个类型参数(键和值),而不是三个 创建一个表示键的类。将其用作地图中的关键
Map<String, Integer, Integer>
Map
但是IDE告诉我我不能这样做,因为地图就是地图K,V
我的问题是,表示此键的最佳方式是什么?Map
Map<String, Integer, Integer>
这不起作用,因为Map
只接受两个类型参数(键和值),而不是三个
创建一个表示键的类。将其用作地图中的关键点。注意:键类必须正确实现hashCode
和equals
方法。Map
这不起作用,因为Map
只接受两个类型参数(键和值),而不是三个
创建一个表示键的类。将其用作地图中的关键点。注意:key类必须正确实现
hashCode
和equals
方法。为什么不创建这样一个自定义键呢-
class MyKey{
int key1;
int key2;
String key3;
// override hashCode & equals
}
然后可以使用该类作为密钥
Map<MyKey, Value>
Map
为什么不创建这样一个自定义密钥呢-
class MyKey{
int key1;
int key2;
String key3;
// override hashCode & equals
}
然后可以使用该类作为密钥
Map<MyKey, Value>
Map
这取决于您想用它做什么:
您可以创建一个bean作为密钥:
public class MyCompositeKey {
private String field1;
private Integer field2, field3;
//getters and setters here
@Override
public int hashCode() {
//your implementation here, you can use here the hashCode of Integer and String
}
@Override
public boolean equals(Object o) {
if (o instanceof MyCompositeKey) {
MyCompositeKey that=(MyCompositeKey) o;
//compare here the fields
}
return false;
}
}
或者你可以做一些类似的事情:
String key=field1+"-"+field2+"-"+field3;
并将该字符串用作地图中的键
或者您可能只需要一个
列表
,在该列表中按前缀顺序添加三个元素。这取决于您想对其执行的操作:
您可以创建一个bean作为密钥:
public class MyCompositeKey {
private String field1;
private Integer field2, field3;
//getters and setters here
@Override
public int hashCode() {
//your implementation here, you can use here the hashCode of Integer and String
}
@Override
public boolean equals(Object o) {
if (o instanceof MyCompositeKey) {
MyCompositeKey that=(MyCompositeKey) o;
//compare here the fields
}
return false;
}
}
或者你可以做一些类似的事情:
String key=field1+"-"+field2+"-"+field3;
并将该字符串用作地图中的键
或者,您可能只需要一个列表
,在其中按前缀顺序添加三个元素