package com.levelup.java.array;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import org.apache.commons.lang3.ArrayUtils;
import org.junit.Test;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterators;
import com.google.common.primitives.Ints;
/**
* This java example will demonstrate finding, searching
* or if element is contained within array
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/find-element-in-array'>Find element in array</a>
*
*/
public class FindElementInArray {
@Test
public void search_array_java () {
Integer[] vikQueensLosingSeasons = {
1962, 1967, 1984, 2011, 1966,
1963, 1982, 2001, 1990, 2002,
2006, 2010, 1965, 1972, 1979,
1981, 1985};
boolean losingSeason = false;
for (Integer number : vikQueensLosingSeasons) {
if (number.equals(1962)) {
losingSeason = true;
break;
}
}
assertTrue(losingSeason);
}
@Test
public void search_array_java_with_list_contains_with_list_contains () {
Integer[] vikQueensLosingSeasons = {
1962, 1967, 1984, 2011, 1966,
1963, 1982, 2001, 1990, 2002,
2006, 2010, 1965, 1972, 1979,
1981, 1985};
boolean hadALosingSeason = Arrays
.asList(vikQueensLosingSeasons)
.contains(new Integer(1962));
assertTrue(hadALosingSeason);
}
@Test
public void array_contains_element_java_binary_search () {
Integer[] vikQueensLosingSeasons = {
1962, 1967, 1984, 2011, 1966,
1963, 1982, 2001, 1990, 2002,
2006, 2010, 1965, 1972, 1979,
1981, 1985};
Arrays.sort(vikQueensLosingSeasons);
int elementPosition = Arrays.binarySearch(vikQueensLosingSeasons, 1962);
assertTrue(elementPosition >= 0);
}
@Test
public void array_contains_element_java8 () {
Integer[] vikQueensLosingSeasons = {
1962, 1967, 1984, 2011, 1966,
1963, 1982, 2001, 1990, 2002,
2006, 2010, 1965, 1972, 1979,
1981, 1985};
java.util.Optional<Integer> yearExists =
Arrays.stream(vikQueensLosingSeasons)
.filter(p -> p == 1972)
.findAny();
assertTrue(yearExists.isPresent());
}
@Test
public void array_contains_element_java_with_guava () {
int[] vikQueensLosingSeasons = {
1962, 1967, 1984, 2011, 1966,
1963, 1982, 2001, 1990, 2002,
2006, 2010, 1965, 1972, 1979,
1981, 1985};
boolean yearExists = Ints.contains(vikQueensLosingSeasons, 1972);
assertTrue(yearExists);
}
@Test
public void find_element_in_array_java_with_guava() {
Integer[] vikQueensLosingSeasons = { 1962, 1967, 1984, 2011, 1966,
1963, 1982, 2001, 1990, 2002, 2006, 2010, 1965, 1972, 1979,
1981, 1985 };
Optional<Integer> contains = Iterators.tryFind(
Iterators.forArray(vikQueensLosingSeasons),
new Predicate<Integer>() {
public boolean apply(Integer input) {
if (input == 1962) {
return true;
} else {
return false;
}
}
});
assertTrue(contains.isPresent());
assertEquals(new Integer(1962), contains.get());
}
@Test
public void array_contains_element_java_with_apache_commons () {
int[] vikQueensLosingSeasons = {
1962, 1967, 1984, 2011, 1966,
1963, 1982, 2001, 1990, 2002,
2006, 2010, 1965, 1972, 1979,
1981, 1985};
boolean losingSeason = ArrayUtils.contains(vikQueensLosingSeasons, 1962);
assertTrue(losingSeason);
}
}