El siguiente método recorre 2 listas de excel, y celda por celda compara 2 strings para así encontrar la afinidad entre estos.
//creamos un metodo que nos compare 2 listas
public static List comparar(List l1, List l2) {
//Creamos una lista llamada comp en donde almacenaremos los datos
List comp = new ArrayList();
//Creamos un ciclo que recorra toda la primera lista
for(int i=8; i<l1.size();i++) {
//creamos una sublista en donde se van almacenando los valores de l1 en la posición i
List sub = (List) l1.get(i);
//almacenamos los datos de cada celda en hssfCell
XSSFCell hssfCell = (XSSFCell) sub.get(2);
//los datos almacenados en hssfCell los convertimos en String
String s = hssfCell.toString();
//creamos un ciclo que nos recorra la segunda lista
for(int j = 1; j<l2.size(); j++) {
//creamos una sublista en donde se van almacenando los valores de l2 en la posición j
List sub2 = (List) l2.get(j);
//almacenamos los datos de cada celda en hssfCELL2
XSSFCell hssfCell2 = (XSSFCell) sub2.get(3);
//convertimos a string los datos almacenados en hssfCell2
String s2 = hssfCell2.toString();
//implementamos el método de setwords para calcular
ld.setWords(s,s2);
float afinidad=ld.getAfinidad();
if(afinidad*100>65) {
String[] dup = {s, s2};
comp.add(dup);
System.out.println("Marca solicitada: " + s);
System.out.println("Marca Contactenos: " + s2);
System.out.println("\nDistancia de Levenshtein:\n" + ld.getDistancia());
System.out.println("Afinidad:\n" + ld.getAfinidad() * 100 + " %");
}
}
}
return comp;
}
Al ejecutar todo el programa saca este error:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at levenshtein1.Levenshtein1.comparar(Levenshtein1.java:34)
at levenshtein1.Levenshtein1.main(Levenshtein1.java:73)
C:\Users\Usuario\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)