我创建了两个类Waitlist
和Party
。 Waitlist
课程将使用LocalTime
列表,并为每个Party
分配多个LocalTime
。我不清楚我是否应该制作LocalTime
s数组和Party[]
s数组,或者我是否应该以某种方式使用ArrayList
或HashMap
是一个Waitlist.java
这种情况下的好选择。
public class Waitlist {
private static final int N = 74;
private LocalTime[] times;
private ArrayList<Party>[] slots;
private HashMap<LocalTime, ArrayList<Party>[]> list;
public Waitlist() {
// initialize variables
//init `times`
times = new LocalTime[N];
slots = new ArrayList[N];
int h = 9; // open
int m = 0;
for (int i = 0; i < N; i++) {
slots[i] = new ArrayList<>();
times[i] = LocalTime.of(h, m);
if (m == 48) {
h++;
m = 0;
} else {
m += 12;
}
}
}
}
Seq.seq(Files.readAllLines(Paths.get(new File("/path/to/Example.java").toURI())))
.window(-1, 1)
.filter(w -> w.value().contains("ABC"))
.forEach(w -> {
System.out.println("-1:" + w.lag().orElse(""));
System.out.println(" 0:" + w.value());
System.out.println("+1:" + w.lead().orElse(""));
// ABC: Just checking
});
答案 0 :(得分:3)
在这里,哈希地图似乎是您最好的选择。因为您有一个聚会与时间的关联,您可以将关键字设置为时间,值将是列表。这允许在按时间访问时非常有效地检索参与者列表(我假设您将这样做)并且仅仅迭代列表。这比在两个单独的列表上执行搜索以获得关联更快。此外,HashMaps也为键提供迭代器,因此如果您需要时间列表,则可以使用它。
具体而言,您的HashMap对于其数据类型应该如下所示。
HashMap<LocalTime, ArrayList<Party>> parties;
此时,举办派对就像
一样简单parties.get(time).get(index);
我正在写一种pseduo-code,因为我不在我的机器附近,但总的想法就在那里。