Java, return if List contiene String
arraylist contains string (6)
En Java, quiero verificar si existe una cadena en una List<String> myList
.
Algo como esto:
if(myList.contains("A")){
//true
}else{
// false
}
El problema es myList puede contener datos sin recortar:
{'' A'', ''B '', '' C ''}
Quiero que sea verdadero si mi artículo ''B''
está en la lista. ¿Cómo debería hacer esto? Me gustaría evitar una estructura de bucle.
Con Java 8 Stream API:
List<String> myList = Arrays.asList(" A", "B ", " C ");
return myList.stream().anyMatch(str -> str.trim().equals("B"));
Es posible que pueda utilizar una biblioteca de coincidencia de cadenas aproximada para hacer esto, por ejemplo, SecondString , pero eso es casi con seguridad exagerado; solo use una de las respuestas for-loop proporcionadas en su lugar.
Necesita iterar su lista y llamar a String#trim
para buscar:
String search = "A";
for(String str: myList) {
if(str.trim().contains(search))
return true;
}
return false;
O si desea realizar ignorar la búsqueda de casos , utilice:
search = search.toLowerCase(); // outside loop
// inside the loop
if(str.trim().toLowerCase().contains(search))
Prueba esto:
for(String str: myList) {
if(str.trim().equals("A"))
return true;
}
return false;
Necesita usar str.equals
o str.equalsIgnoreCase
lugar de contains
porque contains
en string
no funciona lo mismo que contains
en List
List<String> s = Arrays.asList("BAB", "SAB", "DAS");
s.contains("A"); // false
"BAB".contains("A"); // true
Puedes hacerlo en una sola línea usando regex:
if (myList.toString().matches(".*//bA//b.*"))
Este código debería funcionar bastante bien.
Por cierto, podrías construir la expresión regular de una variable, como esta:
.matches("//[.*//b" + word + "//b.*]")
Agregué [
y ]
a cada extremo para evitar una coincidencia falsa positiva cuando el término de búsqueda contiene un corchete de abrir / cerrar al principio / final.
String search = "A";
for(String s : myList)
if(s.contains(search)) return true;
return false;
Esto iterará sobre cada cadena en la lista, y verifica si contiene la cadena que está buscando. Si solo quiere espacios para atrapar, puede hacer esto:
String search = "A";
for(String s : myList)
if(s.replaceAll(" ","").contains(search)) return true;
return false;
que primero reemplazará espacios con cadenas vacías antes de buscar. Además, si solo quieres recortar la cadena primero, puedes hacer:
String search = "A";
for(String s : myList)
if(s.trim().contains(search)) return true;
return false;