反向检查 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], []]
假设我有 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], []]