看一下我的GUI部分
一旦用户从分支JComboBox中选择一个特定分支,我就必须查询数据库并获得适用于该分支的所有年份,并将这些年份添加到下一个JComboBox年份,依此类推。用户有很多机会在他选择的分支之间进行交换,我会发现自己每次更改选项时都会再次向数据库查询相同的查询,并且数据库中的数据极不可能发生在这些交换之间进行更改....所以我决定将这些存储在一些数据结构中,对于一个这样的数据结构,我有什么最好的选择?可能有2到3个不同的分支,4到6个不同年份等等.....
什么是我最好的选择?
答案 0 :(得分:3)
如何创建一个地图,其中分支是关键,而年,学期和部分都在VO对象中?假设VO名为BranchDetails,那么您可以使用Map<String,BranchDetails>()
。
BranchDetails可以像下面这样简单:
class BranchDetails{
List<Integer> years;
List<Integer> semesters;
List<Integer> sections;
//getters and setters omitted for brevity
}
答案 1 :(得分:2)
如果应用程序是单线程的,请使用HashMap
。您可以“嵌套”HashMap
,例如HashMap<String, HashMap<Integer, HashMap<Integer, HashMap<String, Item>>>>
。请参阅this question,了解如何迭代HashMap
。
以下是一些示例代码,只使用两个嵌套来提供您的想法:
HashMap<String, HashMap<Integer, HashMap<Integer, HashMap<String, String>>>> map1 = new HashMap<String, HashMap<Integer, HashMap<Integer, HashMap<String, String>>>>();
map1.put("Computers", new HashMap<Integer, HashMap<Integer, HashMap<String, String>>>());
map1.get("Computers").put(2011, new HashMap<Integer, HashMap<String, String>>());
map1.get("Computers").get(2011).put(2, new HashMap<String, String>());
答案 2 :(得分:1)
我会将它们保存在包含完整数据的单独列表中。 (他们很小)。
List<Branch> branches;
List<Year> years;
List<Semester> semesters;
List<Section> sections;
其中每个对象Branch, Year, Semester, Section
都有必要的数据将它们链接到另一个对象。例如,Branch
可以包含list of yearId
等映射,尽可能接近实际的数据库结构(使初始加载变得快速而简单)。
在UI中进行状态更改后,您只需复制此数据结构上的实际数据库查询并返回所需内容。