【发布时间】:2014-01-06 03:24:19
【问题描述】:
我正在开发一个 java 程序,它接受一个字符串并将其拆分为不同的级别。
Map<String, ArrayList<Map<String, ArrayList<Map<String,Map<String, String>>>>>> courseInfoMap = new HashMap<String, ArrayList<Map<String,ArrayList<Map<String,Map<String, String>>>>>>();
ArrayList<Map<String, ArrayList<Map<String,Map<String, String>>>>> courseNumList = new ArrayList<Map<String, ArrayList<Map<String,Map<String, String>>>>>();
Map<String, ArrayList<Map<String,Map<String, String>>>> courseNumTextbookMap = new HashMap<String, ArrayList<Map<String,Map<String, String>>>>();
ArrayList<Map<String,Map<String, String>>> listOfTextbooks = new ArrayList<Map<String,Map<String,String>>>();
Map<String, Map<String, String>> textbookMap = new HashMap<String, Map<String, String>>();
Map<String, String> isbnMap = new HashMap<String,String>();
基本上, 我正在尝试拥有课程代码->课程编号列表->课程编号(键)->教科书列表->教科书-> isbn编号(str)->价格
因此,因为某些课程代码有多个课程编号,它指向一个数组列表。
我一直在向后添加东西,所以在循环中循环。假设我没有搞砸那里。我一直在尝试以相同的方式循环遍历元素,假设它们可能已被添加。
for(Map.Entry<String, ArrayList<Map<String, ArrayList<Map<String,Map<String, String>>>>>> entry : courseInfoMap.entrySet()){
System.out.println(entry.getKey());// COURSE CODE
for(int i = 0; i < entry.getValue().size();i++){//loops through arraylist of course numbers
System.out.println("i("+i+" - " + entry.getValue().get(i));
for(Map.Entry<String, ArrayList<Map<String,Map<String,String>>>> entry2 : entry.getValue().get(i).entrySet()){
System.out.println(" " + entry2.getKey());
// . . . and so on
这并没有奏效,它只是循环遍历所有内容。在每个级别上。
我的问题是如何浏览大量的哈希图和/或有更好的方法来做到这一点。
例子:
AAAA
100
Name
###
$$$
Name
### <-- different from past
$$$
200
Name
###
$$$
BBBB
101
Name
###
$$$
【问题讨论】:
-
不要用这么多的嵌套级别伤害自己。在类中封装和结构化您的数据。