Multimap Java的多重映射 - 对时间表进行分类

时间:2015-01-04 01:56:00

标签: java object arraylist hashmap multimap

我已经解析了HTML时间表并将每个Subject加载到我的类对象中。 所以我有我的主题的arrayList,它有姓名,老师,...,HOUR和DAY的信息 现在我想重建表格,所以我需要先对它进行分类。我认为最好是拥有这样的结构:

Monday: 1: Math, Czech, ...
        2: History
        ...
Tuesday: 1: English, Geo
         2...
...

在给定的时间内可能有多个主题,因此我尝试使用Multimap的Multimap,但我无法在解析期间声明它。

Multimap<String, Multimap<String, Subject>> timetable = HashMultimap.create();
...
for ...
    timetable.put(subject.den, new HashMultimap<>(subject.hod, subject));

但是它说HashMultimap在com.google.common上有私人访问... 我不知道如何正确地写这个。我也在考虑使用Array,但我必须预先声明它,我想在一个循环中构建它。 有任何想法吗?提前谢谢

1 个答案:

答案 0 :(得分:1)

看起来你想要的实际上更像是Map<String, Multimap<String, Subject>>,在这种情况下你需要

 Map<String, Multimap<String, Subject>> timetable = new HashMap<>();
 for ...
   Multimap<String, Subject> multimap = timetable.get(subject.den);
   if (multimap == null) {
     multimap = HashMultimap.create();
     timetable.put(subject.den, multimap);
   }
   multimap.put(subject.hod, subject);