OK let's say I have an array filled with {"tube", "are", "fun"} and then I have a JTextField and if I type either one of those commands to do something and if NOT to get like a message saying "Command not found".
I tried looking in Java docs but all I am getting is things that I don't want like questions and stuff... so, how is this done? I know there is a "in array" function but I'm not too good with combining the two together.
Thanks.
Here is what I have so far:
String[] dan = {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};
boolean contains = dan.contains(say.getText());
but I am getting cannot find symbol in dan.contains
5 Answers 5
This is what you're looking for:
List<String> dan = Arrays.asList("Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue");
boolean contains = dan.contains(say.getText());
If you have a list of not repeated values, prefer using a Set<String>
which has the same contains method
-
That's because an array is not a setPablo Fernandez– Pablo Fernandez08/26/2010 04:09:22Commented Aug 26, 2010 at 4:09
-
@Dan - BZZZT - you are trying to invoke
contains
on an array, not aSet
!!!Stephen C– Stephen C08/26/2010 04:10:47Commented Aug 26, 2010 at 4:10 -
THANKS SIMPSO- I MEAN PABLO! :D Tahnks Stephen. Rookie mistake.test– test08/26/2010 04:59:42Commented Aug 26, 2010 at 4:59
String[] a= {"tube", "are", "fun"};
Arrays.asList(a).contains("any");
-
THIS is what I was looking for. Simple !ether_joe– ether_joe05/19/2015 18:37:06Commented May 19, 2015 at 18:37
Use Arrays.asList()
to wrap the array in a List<String>
, which does have a contains()
method:
Arrays.asList(dan).contains(say.getText())
This can be done in java 8 using Stream.
import java.util.stream.Stream;
String[] stringList = {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};
boolean contains = Stream.of(stringList).anyMatch(x -> x.equals(say.getText());
-
1This is the best answer. The others fail because
asList
returns non-parameterized generic.John Henckel– John Henckel01/23/2018 18:13:34Commented Jan 23, 2018 at 18:13
If you can organize the values in the array in sorted order, then you can use Arrays.binarySearch()
. Otherwise you'll have to write a loop and to a linear search. If you plan to have a large (more than a few dozen) strings in the array, consider using a Set instead.
-
Erm, would it matter if I said that the array would be permnant and not changed at a order at all? Would there be an easier way than?test– test08/26/2010 04:09:05Commented Aug 26, 2010 at 4:09
-
@Dan - I think his first sentence answers that. You do know how to sort strings by hand, don't you?Stephen C– Stephen C08/26/2010 04:14:33Commented Aug 26, 2010 at 4:14
-
1@Jim, this answer is incorrect. The documentation of
#binarySearch
explicitly states: "If the array contains elements that are not mutually comparable (for example, strings and integers), it cannot be sorted according to the natural ordering of its elements, hence results are undefined." DO NOT usebinarySearch
onInteger
orString
, or any elements that can at most have a partial order.Aleksandar Dimitrov– Aleksandar Dimitrov01/18/2017 07:54:37Commented Jan 18, 2017 at 7:54