56

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

Pablo Fernandez
  • 103,170
  • 56
  • 192
  • 232
test
  • 17,706
  • 64
  • 171
  • 244

5 Answers5

81

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

Pablo Fernandez
  • 103,170
  • 56
  • 192
  • 232
40
String[] a= {"tube", "are", "fun"};
Arrays.asList(a).contains("any");
卢声远 Shengyuan Lu
  • 31,208
  • 22
  • 85
  • 130
7

Use Arrays.asList() to wrap the array in a List<String>, which does have a contains() method:

Arrays.asList(dan).contains(say.getText())
John Kugelman
  • 349,597
  • 67
  • 533
  • 578
6

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());
Dream Lane
  • 1,282
  • 5
  • 16
  • 27
1

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.

Jim Garrison
  • 85,615
  • 20
  • 155
  • 190
  • 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 Aug 26 '10 at 04:09
  • @Dan - I think his first sentence answers that. You do know how to sort strings by hand, don't you? – Stephen C Aug 26 '10 at 04: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* use `binarySearch` on `Integer` or `String`, or any elements that can at most have a partial order. – Aleksandar Dimitrov Jan 18 '17 at 07:54