How do I determine whether an array contains a particular value in Java?

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

MethodWorks ForTime ComplexityNotes
Loop/StreamAll arraysO(n)Simplest for primitives and small data
Arrays.asList()Object arraysO(n)Concise for objects (e.g., String[])
binarySearchSorted arraysO(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!

Leave a Reply

Your email address will not be published. Required fields are marked *