To determine if a Java array contains a specific value, use one of the following methods based on the array type and context:
1. For Primitive Arrays (e.g., int[]
, char[]
)
Loop through the array or use Java 8+ streams.
Using a Loop
int[] arr = {1, 2, 3, 4, 5};
int target = 3;
boolean contains = false;
for (int num : arr) {
if (num == target) {
contains = true;
break;
}
}
// contains → true
Using Java 8 Streams
int[] arr = {1, 2, 3, 4, 5};
int target = 3;
boolean contains = Arrays.stream(arr).anyMatch(num -> num == target);
2. For Object Arrays (e.g., String[]
, Integer[]
)
Use Arrays.asList()
with contains()
or Java 8 streams.
Using Arrays.asList()
String[] arr = {"apple", "banana", "cherry"};
String target = "banana";
boolean contains = Arrays.asList(arr).contains(target); // true
Using Java 8 Streams
boolean contains = Arrays.stream(arr)
.anyMatch(target::equals); // Handles non-null target
// For null-safe comparison:
boolean contains = Arrays.stream(arr)
.anyMatch(s -> Objects.equals(s, target));
3. For Sorted Arrays
Use Arrays.binarySearch()
for faster lookup (requires sorted array).
int[] sortedArr = {1, 2, 3, 4, 5};
int target = 3;
// Ensure array is sorted first!
int index = Arrays.binarySearch(sortedArr, target);
boolean contains = index >= 0; // true
Key Differences
Method | Works For | Time Complexity | Notes |
---|---|---|---|
Loop/Stream | All arrays | O(n) | Simplest for primitives and small data |
Arrays.asList() | Object arrays | O(n) | Concise for objects (e.g., String[] ) |
binarySearch | Sorted arrays | O(log n) | Fast for large sorted arrays |
When to Use Which
- Primitive Arrays: Use loops or streams.
- Object Arrays: Prefer
Arrays.asList().contains()
for simplicity. - Large Sorted Arrays: Use
binarySearch
for efficiency. - Java 8+ Code: Streams offer concise syntax and functional programming benefits.
Example Summary
// Primitive array (int[])
int[] nums = {1, 2, 3};
boolean hasThree = Arrays.stream(nums).anyMatch(n -> n == 3);
// Object array (String[])
String[] fruits = {"apple", "banana"};
boolean hasBanana = Arrays.asList(fruits).contains("banana");
// Sorted array (binarySearch)
int[] sorted = {1, 2, 3, 4};
boolean hasTwo = Arrays.binarySearch(sorted, 2) >= 0;
Choose the method that best fits your array type, data size, and code style!