【问题标题】:Best way to store Database Data(many to many relation) in Collection in java在java中的集合中存储数据库数据(多对多关系)的最佳方法
【发布时间】:2023-03-17 01:59:01
【问题描述】:

我的问题在这里(可能是我的问题标题不正确)

我有三张桌子

  1. DATA(包含动作外键和设备表)
  2. 动作
  3. 设备

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

我已经缓存了包含所有行的 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
 }
}

提前致谢。如果他们有任何新方法,我们将不胜感激。

【问题讨论】:

    标签: java arraylist collections hashmap


    【解决方案1】:

    当你总是通过这两个属性搜索时,你可以创建一个新类,我们称之为DataIdentifier,它由actionId和deviceId组成。确保它可以用作HashMap&lt;DataIdentifier, List&lt;String&gt;&gt; 中的键:

    1. 覆盖 public int hashCode() 以返回从 actionIddeviceId
    2. 派生的哈希码
    3. 当 actionId 和 deviceId 相同时,覆盖 boolean equals(Object other) 以返回 true。

    然后你会像这样使用它:

    List<String> dataDetails = datas.find(new DataIdentifier(actionId, deviceId));
    

    【讨论】:

    • 感谢您的帮助,您能否详细说明一下,如何使用三个列表(DATA、DEVICE、ACTION)生成 HashMap?
    • 您是否在 DATA 表中拥有您需要的所有信息,或者您是否还需要其他表中的信息?
    • 目前我只想要按 actionid 和 deviceid 的数据对象。第一步是如何将数据存储在对象中
    【解决方案2】:
    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);
    

    【讨论】:

      猜你喜欢
      • 2011-03-10
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      相关资源
      最近更新 更多