[List-CaseInsenContains] Case-Insensitive Searching in ArrayList (#13280)

This commit is contained in:
Kai Yuan 2023-01-14 03:34:54 +01:00 committed by GitHub
parent 13097b458f
commit c0157effb0
3 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,14 @@
package com.baeldung.list.ignorecase;
import java.util.List;
public class IgnoreCaseSearchUtil {
public static boolean ignoreCaseContains(List<String> theList, String searchStr) {
for (String s : theList) {
if (searchStr.equalsIgnoreCase(s)) {
return true;
}
}
return false;
}
}

View File

@ -0,0 +1,29 @@
package com.baeldung.list.ignorecase;
import java.util.ArrayList;
import java.util.Collection;
public class IgnoreCaseStringList extends ArrayList<String> {
public IgnoreCaseStringList() {
}
public IgnoreCaseStringList(Collection<? extends String> c) {
super(c);
}
@Override
public boolean contains(Object o) {
String searchStr = (String) o;
// Using Stream API:
// return this.stream().anyMatch(searchStr::equalsIgnoreCase);
for (String s : this) {
if (searchStr.equalsIgnoreCase(s)) {
return true;
}
}
return false;
}
}

View File

@ -0,0 +1,45 @@
package com.baeldung.list.ignorecase;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class IgnoreCaseContainsUnitTest {
private static final List<String> LANGUAGES = Arrays.asList("Java", "Python", "Kotlin", "Ruby", "Javascript", "Go");
@Test
void givenStringList_whenCallTheStandardContains_shouldReturnFalse() {
String searchStr = "jAvA";
boolean result = LANGUAGES.contains(searchStr);
assertFalse(result);
}
@Test
void givenStringList_whenSearchIgnoreCaseUsingStreamAPI_shouldReturnTrue() {
String searchStr = "koTliN";
boolean result = LANGUAGES.stream().anyMatch(searchStr::equalsIgnoreCase);
assertTrue(result);
}
@Test
void givenStringList_whenUsingUtilClass_shouldReturnTrue() {
String searchStr = "ruBY";
boolean result = IgnoreCaseSearchUtil.ignoreCaseContains(LANGUAGES, searchStr);
assertTrue(result);
}
@Test
void givenStringList_whenUsingIgnoreCaseStringList_shouldReturnTrue() {
String searchStr = "pYtHoN";
List<String> ignoreCaseList = new IgnoreCaseStringList(LANGUAGES);
boolean result = ignoreCaseList.contains(searchStr);
assertTrue(result);
boolean resultContainAll = ignoreCaseList.containsAll(Arrays.asList("pYtHon", "jAvA", "koTliN", "ruBY"));
assertTrue(resultContainAll);
}
}