Prabhakaran Manickkavachagam:
Tengo dos lista de cadenas. Quiero comprobar si cualquier cadena de una lista está disponible en otra lista. Han utilizado a continuación enfoque que falla.
Por favor, hágamelo saber un mejor enfoque
List<String> mylist = Arrays.asList(stringArray1);
List<String> items = Arrays.asList(stringArray2);
return mylist.stream().anyMatch(t->items.stream().anyMatch(t::contains));
Jacob G.:
Si desea encontrar si cualquier elemento mylist
existe en items
, primero se puede convertir items
en una Set
:
Set<String> setOfItems = new HashSet<>(items);
A continuación, puede simplemente iterativa sobre mylist
y comprobar si algún elemento está contenido en setOfItems
.
mylist.stream().anyMatch(setOfItems::contains);
Esto trajo su O(n * k)
problema a O(n + k)
donde n
y k
son los tamaños de mylist
y items
, respectivamente.