1+ package com .amitph .java .collections .list ;
2+
3+ import java .util .ArrayList ;
4+ import java .util .Collection ;
5+ import java .util .List ;
6+
7+ public class ListCaseInsensitiveSearcher {
8+ private final List <String > list = List .of ("Ray" , "Leo" , "Bee" , "Tim" );
9+
10+ public void usingStreams () {
11+ boolean contains = list .stream ()
12+ .anyMatch (x -> x .equalsIgnoreCase ("raY" ));
13+ System .out .println (contains );
14+ }
15+
16+ public void usingUtilityMethod () {
17+ boolean contains = ListCaseInsensitiveSearcher .searchIgnoringCase (list , "lEo" );
18+ System .out .println (contains );
19+ }
20+
21+ public void usingOverriddenContains () {
22+ List <String > customList = new CaseInsensitiveArrayList (list );
23+
24+ System .out .println (customList .contains ("raY" ));
25+
26+ System .out .println (
27+ customList .containsAll (List .of ("ray" , "bEE" , "tIm" )));
28+ }
29+
30+ public static boolean searchIgnoringCase (List <String > list , String text ) {
31+ for (String s : list ) {
32+ if (s .equalsIgnoreCase (text )) {
33+ return true ;
34+ }
35+ }
36+ return false ;
37+ }
38+
39+ public static void main (String [] a ) {
40+ ListCaseInsensitiveSearcher searcher = new ListCaseInsensitiveSearcher ();
41+
42+ System .out .println ("Using Java Streams" );
43+ searcher .usingStreams ();
44+
45+ System .out .println ("Using Util Method" );
46+ searcher .usingUtilityMethod ();
47+
48+ System .out .println ("Using Custom List - overriding the contains()" );
49+ searcher .usingOverriddenContains ();
50+ }
51+ }
52+
53+ class CaseInsensitiveArrayList extends ArrayList <String > {
54+ public CaseInsensitiveArrayList (Collection <String > c ) {
55+ super (c );
56+ }
57+
58+ @ Override
59+ public boolean contains (Object o ) {
60+ String text = (String ) o ;
61+ return this .stream ()
62+ .anyMatch (x -> x .equalsIgnoreCase (text ));
63+ }
64+ }
0 commit comments