Multimap-Java的Multimap-分类时间表

Multimap-Java的Multimap-分类时间表,java,object,arraylist,hashmap,multimap,Java,Object,Arraylist,Hashmap,Multimap,我已经解析了一个HTML时间表,并将每个主题加载到我的类对象中。 所以我有我的科目列表,上面有姓名,老师,日复一日 现在我想重建这个表,所以我需要首先对它进行分类。我认为最好是有这样的结构: Monday: 1: Math, Czech, ... 2: History ... Tuesday: 1: English, Geo 2... ... 在给定的时间内可能会有多个主题,因此我尝试使用Multimap of Multimap,但在解析过程中

我已经解析了一个HTML时间表,并将每个主题加载到我的类对象中。 所以我有我的科目列表,上面有姓名,老师,日复一日 现在我想重建这个表,所以我需要首先对它进行分类。我认为最好是有这样的结构:

Monday: 1: Math, Czech, ...
        2: History
        ...
Tuesday: 1: English, Geo
         2...
...
在给定的时间内可能会有多个主题,因此我尝试使用Multimap of Multimap,但在解析过程中无法声明它

Multimap<String, Multimap<String, Subject>> timetable = HashMultimap.create();
...
for ...
    timetable.put(subject.den, new HashMultimap<>(subject.hod, subject));
Multimap timeline=HashMultimap.create();
...
对于
timeline.put(subject.den,新HashMultimap(subject.hod,subject));
但是它说HashMultimap在com.google.common中有私有访问权。。。 我不知道如何正确地写这个。我也在考虑使用数组,但我必须预先声明它,我想在一个for循环中构建它。
有什么想法吗?提前谢谢你

看起来你想要的其实更多的是一张地图,在这种情况下你想要的

 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);
Map timeline=newhashmap();
对于
Multimap Multimap=timeline.get(subject.den);
if(multimap==null){
multimap=HashMultimap.create();
时间表.put(subject.den,multimap);
}
multimap.put(subject.hod,subject);

我爱你,伙计!这完全符合我的预期!关于这件事,我还有一个问题。现在如何提取特定键上对象的属性?假设我需要对象的名称,即周一的第一个小时。我希望能找到这样的时间表。get(“周一”).get(“1”)[1]。name,但我不知道如何准确键入,因为这不起作用。你是什么意思?在那个地方可能有几个主题。你可以通过写
Collection subjects=timeline.get(“星期一”).get(“1”)
来获取它们。是的,我的意思是,如果有可能只提取当天给定时间内第一个正在教学的科目的属性。也许可以用速记法一步完成?或者我每次都要进行临时收集,并设置iterable以找到它?你说的“进行临时收集”是什么意思?你不是在复制,你只是在变量中存储一个引用;那很便宜。如果你愿意的话,你可以只写
subjects.iterator().next()
。啊,我不知道它只是一个引用。非常感谢你的帮助,你帮了我很多挫折!