在这种情况下,我如何正确使用数组?

时间:2016-01-07 00:35:17

标签: java arrays arraylist hashmap

我创建了两个类WaitlistPartyWaitlist课程将使用LocalTime列表,并为每个Party分配多个LocalTime。我不清楚我是否应该制作LocalTime s数组和Party[] s数组,或者我是否应该以某种方式使用ArrayListHashMap是一个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
   });

1 个答案:

答案 0 :(得分:3)

在这里,哈希地图似乎是您最好的选择。因为您有一个聚会与时间的关联,您可以将关键字设置为时间,值将是列表。这允许在按时间访问时非常有效地检索参与者列表(我假设您将这样做)并且仅仅迭代列表。这比在两个单独的列表上执行搜索以获得关联更快。此外,HashMaps也为键提供迭代器,因此如果您需要时间列表,则可以使用它。

具体而言,您的HashMap对于其数据类型应该如下所示。

HashMap<LocalTime, ArrayList<Party>> parties;

此时,举办派对就像

一样简单
parties.get(time).get(index);

我正在写一种pseduo-code,因为我不在我的机器附近,但总的想法就在那里。