I want check whether a String value val
is contained within a List of Strings lets call it stringList.
I am doing this
if(stringList.con
That doesn’t sound right: contains
uses equals
rather than ==
, so if the string is in the list, it should be found. This can be verified in the indexOf
method of the superclass AbstractList used by ArrayList
.
Following your edit, make sure you trim
strings before doing contains
, as otherwise they may contain the newline
character(s).
Try to override equals(){}, so that you can specify which property needs to compare equality .... :P
Try the following, first make the check more concrete by iterating the list and checking each element separately. Than, when you hit the elements that you are expecting to be equal, This is what you are supposed to be looking at. Check to see if they are really equal. Maybe there is a case difference? (or some other elusive but plain difference like white space?)
ArrayList.contains()
uses Object.equals()
to check for equality (hashCode()
is not involved in List
). This works well for strings. Probably, your string really isn't contained in the list...
You've probably overlooked some whitespace or upper/lower-case or encoding difference...
More code please!
This works:
import java.util.*;
public class Contains {
public static void main(String[] args) {
List<String> stringList = new ArrayList<String>();
stringList.add("someString");
String val = new String("someString");
if (stringList.contains(val)) {
System.out.println("The value is in there");
} else {
System.out.println("There's no such value here");
}
}
}