Since Java 8+, you can filter an ArrayList by using the Stream API

Apart from that, you can query an ArrayList with it's own APIs such as get methods to return element by the specified index; indexOf methods to return index by the specified element; contains methods to check existing; size and isEmpty methods to check the ArrayList size

Lets walk through this tutorial to explore them in more details

Filter with Java 8+ Stream API

  • Using .stream().filter(Predicate) to return elements that match with the given predicate
@Test
public void filter() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(2);

    Integer[] arr = lst.stream().filter(e -> e >= 2).toArray(Integer[]::new);
    assertThat(arr).contains(2, 3);
}

Find element by index

  • get(int) method gets the element at the specified index in the list
@Test
public void get_thenOK() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(2);

    int ele = lst.get(0);
    assertThat(ele).isEqualTo(3);
}
  • IndexOutOfBoundsException will be thrown if the specified index is out of range
@Test(expected = IndexOutOfBoundsException.class)
public void get_thenException() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(2);

    // throws IndexOutOfBoundsException
    int ele = lst.get(4);
}

Find index by element

  • indexOf(Object) method returns the index of the first occurrence of the specified element in the list, otherwise returns -1
@Test
public void indexOf() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(2);

    int idx = lst.indexOf(3);
    assertThat(idx).isEqualTo(0);

    idx = lst.indexOf(4);
    assertThat(idx).isEqualTo(-1);
}
  • lastIndexOf(Object) method returns the index of the last occurrence of the specified element in the list, otherwise returns -1
@Test
public void lastIndexOf() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(3);

    int idx = lst.lastIndexOf(3);
    assertThat(idx).isEqualTo(2);

    idx = lst.indexOf(4);
    assertThat(idx).isEqualTo(-1);
}

Check if elements existing

  • contains(Object) method checks if an ArrayList contains the specified element
@Test
public void contains() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(2);

    boolean contained = lst.contains(1);
    assertThat(contained).isTrue();
}
  • containsAll(Collection) method checks if an ArrayList contains all of elements in the specified collection
@Test
public void containsAll() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(2);

    boolean contained = lst.containsAll(List.of(1, 3));
    assertThat(contained).isTrue();

    contained = lst.containsAll(List.of(1, 4));
    assertThat(contained).isFalse();
}


Check ArrayList size

  • size() gets the number of elements in the list
@Test
public void size() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(2);

    int size = lst.size();
    assertThat(size).isEqualTo(3);
}
  • isEmpty() checks if the list contains no elements
@Test
public void isEmpty() {  
    List<Integer> lst = new ArrayList<>();
    lst.add(3);
    lst.add(1);
    lst.add(2);

    boolean empty = lst.isEmpty();
    assertThat(empty).isFalse();
}

Conclusion

In this tutorial, we learned to filter and query an ArrayList in Java. You can find below the full source code