在 Java 的集合中存储数据库数据(多对多关系)的最佳方法



我的问题在这里(可能是我的问题标题不合适)

我有三个桌子

  1. 数据(包含动作外键和设备表)
  2. 行动
  3. 装置

一个数据可以有多个操作以及设备。

我已经缓存了所有行的数据表。
现在我的目标是以一种可以通过特定操作 ID 和设备 ID 检索数据的方式进行存储。就像查询一样 ( select *from data where actionID=123 AND deviceId=456

我的方法是采取:存储使用Map<DEVICEID,Map<ACTIONID,DATAs>>但如何生成此地图。我有三个pojo类:

public class DATA {
int dataId;
int actionId;
int deviceId;
String dataDetail;
}
public class Action {
int actionId;
int acttionName;
}
public class Device {
int deviceId;
String deviceName;
}
public class GenerateObject {
static List<DEVICE> devices = new ArrayList<DEVICE>();
static List<Action> actions= new ArrayList();
static List<DATA> datas = new ArrayList();
public static void generateCollection(){
    Map<String,Map<String,List>> dataMap = new HashMap<String, Map<String,List>>();
    //Write Code which set dataMap
 }
}

提前谢谢。如果有任何新的方法是他们的,那么就会受到赞赏。

当你总是按这两个属性进行搜索时,你可以创建一个新类,我们称之为DataIdentifier,它由 actionId 和 deviceId 组成。要确保它可以用作HashMap<DataIdentifier, List<String>>中的键,请执行以下操作:

  1. 重写public int hashCode()以返回从actionIddeviceId派生的哈希代码
  2. 覆盖boolean equals(Object other)以在操作 ID 和设备 ID 相同时返回 true。

然后,您将像这样使用它:

List<String> dataDetails = datas.find(new DataIdentifier(actionId, deviceId));
Map<String,Map<String,List>> datas = new HashMap<String, Map<String,List>>();
Map<String,List<T>> actionMap = new HashMap<String, List<T>>;
actionMap.put("actionID", Arrays.asList(1,2)); // assuming T = Integer
datas.put("deviceID", actionMap);

最新更新