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

标签 java arraylist collections hashmap

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

我有三张 table

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

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

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

  1. 覆盖public int hashCode()返回从 actionId 派生的哈希码和 deviceId
  2. 覆盖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/

相关文章:

java - 在 Java 中解析 XML 文件并输出所有错误

java - 如何在嵌套循环中找到 ArrayList 中某些内容的位置?

java - ArrayList 字符串比较

java - Xtend:添加两个不同ArrayList中的元素

java - 遍历Collection,避免在循环中删除对象时避免ConcurrentModificationException

c# - 在 C# 中使用 F# 数据类型

Java集合

java - EJB 3.1 应用程序设计

java - 将 double(原始)转换为 Long(包装)

带 GUI 的 Java 结果集 SQL