BAEL-6327 - Find the index of an element in a Java array (#13844)
This commit is contained in:
parent
1586bc668f
commit
dbf99bc402
|
@ -0,0 +1,28 @@
|
|||
package com.baeldung.arrayindex;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
class ArrayIndex {
|
||||
static int forLoop(int[] numbers, int target) {
|
||||
for (int index = 0; index < numbers.length; index++) {
|
||||
if (numbers[index] == target) {
|
||||
return index;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int listIndexOf(Integer[] numbers, int target) {
|
||||
List<Integer> list = Arrays.asList(numbers);
|
||||
return list.indexOf(target);
|
||||
}
|
||||
|
||||
static int intStream(int[] numbers, int target) {
|
||||
return IntStream.range(0, numbers.length)
|
||||
.filter(i -> numbers[i] == target)
|
||||
.findFirst()
|
||||
.orElse(-1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
package com.baeldung.arrayindex;
|
||||
|
||||
import static com.baeldung.arrayindex.ArrayIndex.forLoop;
|
||||
import static com.baeldung.arrayindex.ArrayIndex.intStream;
|
||||
import static com.baeldung.arrayindex.ArrayIndex.listIndexOf;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import com.google.common.primitives.Ints;
|
||||
|
||||
class ArrayIndexUnitTest {
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseForLoop_thenWillGetElementIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(2, forLoop(numbers, 30));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseForLoop_thenWillGetElementMinusOneIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-1, forLoop(numbers, 100));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseIndexOf_thenWillGetElementIndex() {
|
||||
Integer[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(2, listIndexOf(numbers, 30));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseIndexOf_thenWillGetElementMinusOneIndex() {
|
||||
Integer[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-1, listIndexOf(numbers, 100));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseIntStream_thenWillGetElementIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(2, intStream(numbers, 30));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseIntStream_thenWillGetElementMinusOneIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-1, intStream(numbers, 100));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseBinarySearch_thenWillGetElementIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(2, Arrays.binarySearch(numbers, 30));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseBinarySearch_thenWillGetUpperBoundMinusIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-6, Arrays.binarySearch(numbers, 100));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseBinarySearch_thenWillGetInArrayMinusIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-2, Arrays.binarySearch(numbers, 15));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseBinarySearch_thenWillGetLowerBoundMinusIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-1, Arrays.binarySearch(numbers, -15));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseApacheCommons_thenWillGetElementIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(2, ArrayUtils.indexOf(numbers, 30));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseApacheCommonsStartingFromIndex_thenWillGetNegativeIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-1, ArrayUtils.indexOf(numbers, 30, 3));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseApacheCommons_thenWillGetElementMinusOneIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-1, ArrayUtils.indexOf(numbers, 100));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseGuavaInts_thenWillGetElementIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(2, Ints.indexOf(numbers, 30));
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenIntegerArray_whenUseGuavaInts_thenWillGetElementMinusOneIndex() {
|
||||
int[] numbers = { 10, 20, 30, 40, 50 };
|
||||
assertEquals(-1, Ints.indexOf(numbers, 100));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue