我有以下相互关联的ID:
[0, 0]
[1, 0]
[2, 1] --
[3, 0]
[4, 3]
[5, 1] **
[6, 0]
[7, 6]
[8, 5] **
[9, 3]
[10, 0]
[11, 10]
[12, 0]
[13, 12]
[14, 3]
[15, 1]
[16, 1]
[17, 3]
[18, 0]
[19, 18]
[20, 0]
[21, 20]
[22, 1]
[23, 2] --
[24, 0]
[25, 24]
其中每个代表唯一的ID,以及与之相关的另一个ID。例如,[9,3]表示ID 9取决于(或与之相关)ID3。但是,有几个ID 与同一个ID相关,例如,ID 4、9、14和17与ID 3有关。我想删除与同一个ID相关的ID,以便 删除重复项。为此,我遵循一些规则以确保删除正确的ID:
在上面的示例中应用这些规则的结果将是删除以下ID:
5、8、9、14、15、16、17、22
我执行了以下规则:
List<List<Integer>> dependency = new ArrayList<List<Integer>>();
List<Integer> coveredID = new ArrayList<Integer>();
List<Integer> dependentID = new ArrayList<Integer>();
List<Integer> removedID = new ArrayList<Integer>();
int x1 = 0, x2 = 0;
try (BufferedReader br = new BufferedReader(new FileReader("/home/as/Desktop/Temp/statements"))) { // here I read the file that contains the information of IDs
String line;
while ((line = br.readLine()) != null) {
String[] parts = line.split(" ");
x1 = Integer.valueOf(parts[1].trim()); // to store the ID
x2 = Integer.valueOf(parts[5].trim()); // to store what the ID relates to
List<Integer> a = new ArrayList<Integer>();
a.add(x1);
a.add(x2);
dependency.add(a);
if(!(dependentID.contains(x2))) {
dependentID.add(x2);
}
}
}
for(List<Integer> x: dependency) {
x1 = x.get(0);
x2 = x.get(1);
if(coveredID.contains(x2) && !(dependentID.contains(x1))) {
if(x2 != 0) {
removedID.add(x1);
}
}else{
coveredID.add(x2);
}
}
除最后一条规则外,它都可以正常工作。您知道我可以在代码中添加些什么来使其正常工作吗?