这是摘自《破解编码面试》的代码。我不明白第 4 行和第 5 行。从我所看到的来看,它是 arraylist 的 arraylist,但对它的定义方式有点困惑。请解释一下这些行中实际发生了什么。
1 public class CallHandler {
2 static final int LEVELS = 3; // we have 3 levels of employees
3 static final int NUM_FRESHERS = 5; // we have 5 freshers
4 ArrayList<Employee>[] employeeLevels = new ArrayList[LEVELS];
5 // queues for each call’s rank
6 Queue<Call>[] callQueues = new LinkedList[LEVELS];
7
8 public CallHandler() { ... }
9
10 Employee getCallHandler(Call call) {
11 for (int level = call.rank; level < LEVELS - 1; level++) {
12 ArrayList<Employee> employeeLevel = employeeLevels[level];
13 for (Employee emp : employeeLevel) {
14 if (emp.free) {
15 return emp;
16 }
17 }
18 }
19 return null;
20 }
最佳答案
这是创建一个 ArrayList 的数组(不是 ArrayList)。正如代码注释所示,员工分为 3 个级别。他们将每个级别存储在 employeeLevels
数组的 3 个 ArrayList 之一中。
或者,他们可以将每个员工级别存储在自己的变量中 - 但这肯定不具有可扩展性或灵 active 。它还会使诸如循环每个级别(实际上,从第 11-12 行开始)之类的事情变得更加困难。
关于java - 数组列表的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9255874/