Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置唯一标识符的映射?_Java - Fatal编程技术网

Java 如何设置唯一标识符的映射?

Java 如何设置唯一标识符的映射?,java,Java,我们有一个数据库表,该表上的唯一索引是一个复合键(String,int,int)。我想在Java类中添加一个字段来保存这个键。我试过: Map<String, Integer, Integer> Map 但是IDE告诉我我不能这样做,因为地图就是地图K,V 我的问题是,表示此键的最佳方式是什么?Map Map<String, Integer, Integer> 这不起作用,因为Map只接受两个类型参数(键和值),而不是三个 创建一个表示键的类。将其用作地图中的关键

我们有一个数据库表,该表上的唯一索引是一个复合键(String,int,int)。我想在Java类中添加一个字段来保存这个键。我试过:

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;
并将该字符串用作地图中的键

或者,您可能只需要一个
列表
,在其中按前缀顺序添加三个元素