我的问题在这里(可能是我的问题标题不合适)
我有三张桌子
一个DATA可以有多个动作以及设备。
我已将所有行缓存在DATA表中
现在我的目标是以我可以通过特定actionid和deviceid检索DATA的方式存储。
就像查询(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
}
}
在此先感谢。如果有任何新方法,那将是apreciated。
答案 0 :(得分:0)
当您总是使用这两个属性进行搜索时,您可以创建一个新类,我们可以将其称为DataIdentifier
,它由actionId和deviceId组成。确保它可以用作HashMap<DataIdentifier, List<String>>
:
public int hashCode()
以返回源自actionId
和deviceId
以及boolean equals(Object other)
,当actionId和deviceId相同时返回true。然后你会像这样使用它:
List<String> dataDetails = datas.find(new DataIdentifier(actionId, deviceId));
答案 1 :(得分:0)
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);