-1
я набор путей, как это:сравнивающие пути в Java
body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[2]/div/span[2]
body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[2]/a/h2
body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[3]/div[1]/div[2]/a/span
body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[3]/div[1]/div[4]/div[2]/a/span[1]
body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[9]/div/div/div/div[2]/div[3]/div[1]/div[8]/a/span
body/div[2]/div[3]/div/div[2]/div/div[2]/div/div/ul[4]/li[4]/a/span[1]
это Java-код, который найти схожие пути и вернуть его:
List<String> output= new ArrayList<>();
List<String> hh = new ArrayList<>();
output.add("body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[2]/div/span[2]");
output.add("body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[2]/a/h2");
output.add("body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[3]/div[1]/div[2]/a/span");
output.add("body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[3]/div[1]/div[4]/div[2]/a/span[1]");
output.add("body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[9]/div/div/div/div[2]/div[3]/div[1]/div[8]/a/span");
output.add("body/div[2]/div[3]/div/div[2]/div/div[2]/div/div/ul[4]/li[4]/a/span[1]");
for(int a=0; a<output.size(); a++)
{
for(int b=0; b<output.size(); b++) {
String chemin = output.get(a);
if(a != b)
{
String chemin_comparé = output.get(b);
while(true) {
if(chemin_comparé.indexOf(chemin) != -1 && !output.contains(chemin))
hh.add(chemin);
if(chemin.contains("/")) {
chemin = chemin.substring(0, chemin.lastIndexOf("/"));
} else {
break;
}
}
}
}
}
final ArrayList<String> filteredOutputList = new ArrayList<>();
for (String string1 : hh) {
boolean stringIsContainedInOtherString = false;
for (String string2 : hh) {
if(!string2.equals(string1) && string2.contains(string1)) {
stringIsContainedInOtherString = true;
break;
}
}
if(!stringIsContainedInOtherString && !filteredOutputList.contains(string1)) {
filteredOutputList.add(string1);
}
}
for(String filteredOutput: filteredOutputList)
System.out.println(filteredOutput);
и дать мне результат, как это:
body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[2]
body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]/div[3]/div[1]
это хорошо, но в моем случае я хочу повторить еще раз эту функцию до тех пор, i'got только один общий путь к конечному результату должно быть как это:
body/div[2]/div[3]/div/div[1]/div/div[2]/div[2]/ul/li[8]/div/div/div/div[2]
сейчас работает, у меня была проблема с функциями рекурсификаций: D, теперь это понятно! , Спасибо вам – kivok94