反向检查 arraylist java 中的所有依赖项

reverse check back all the dependencies in the arraylist java

假设我有 TASK 数组列表 {A,B,C,D,E,F} 和 Dependencies 数组列表指示每个对应的 TASK {-,-,A,AB,CD,E}

我在 java 程序中找到前向依赖没有问题,但是如果我希望它反转并存储到新的数组后向列表中怎么办,例如 {CD,D,E,E,F,-}

转发:

我有点不清楚你的任务是如何定义的,但假设一个任务是 class 这样的:

class Task {

    private final String name;

    public Task(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return name;
    }
}

然后你可以像这样定义你的输入数组列表(前提是你已经静态导入了 asList() 和 emptyList() 方法):

    final Task a = new Task("A");
    final Task b = new Task("B");
    final Task c = new Task("C");
    final Task d = new Task("D");
    final Task e = new Task("E");
    final Task f = new Task("F");

    List<Task> tasks = asList(a, b, c, d, e, f);

    List<List<Task>> dependencies = asList(
        emptyList(), 
        emptyList(),
        asList(a),
        asList(a, b),
        asList(c, d),
        asList(e)
   );

可以通过多种方式计算前向引用。这是一个例子:

    public List<List<Task>> forwardDependencies(
        List<Task> tasks,
        List<List<Task>> dependencies
    ) {
    List<List<Task>> forwardDependencies = new ArrayList<>();

    for (Task task : tasks) {
        List<Task> forwardDependency = new ArrayList();
        for (int i = 0; i < dependencies.size(); i++) {
            List<Task> dependency = dependencies.get(i);
            if (dependency.contains(task)) {
                forwardDependency.add(tasks.get(i));
            }
        }
        forwardDependencies.add(forwardDependency);
    }
    return forwardDependencies;
}

呼叫

        System.out.println(forwardDependencies(tasks, dependencies));

会产生

        [[C, D], [D], [E], [E], [F], []]