我的问题在这里(可能是我的问题标题不正确)
我有三张 table
- DATA(包含操作和设备表的外键)
- 行动
- 设备
一个数据可以有多个操作以及设备。
我已经缓存了包含所有行的 DATA 表。
现在我的目标是存储,以便我可以通过特定的actionid 和deviceid 检索数据。
就像查询( select *from data where actionID=123 AND deviceId=456
)
我的方法是采取:
使用 Map<DEVICEID,Map<ACTIONID,DATAs>>
存储但如何生成此 map 。
我有三个 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>>
中的 key :
- 覆盖
public int hashCode()
返回从actionId
派生的哈希码和deviceId
和 - 覆盖
boolean equals(Object other)
当actionId和deviceId相同时返回true。
然后你可以像这样使用它:
List<String> dataDetails = datas.find(new DataIdentifier(actionId, deviceId));
关于java - 在java集合中存储数据库数据(多对多关系)的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27704607/