use 'sorted' flag in indexOf
This commit is contained in:
@@ -566,12 +566,20 @@ public final class IntList implements Serializable, Cloneable {
|
||||
* if offset is negative, or larger than the size of the list
|
||||
*/
|
||||
public int indexOf(final int value, final int offset) {
|
||||
for (int i = offset; i < index; i++) {
|
||||
if (data[i] == value) {
|
||||
return i;
|
||||
|
||||
int result = -1;
|
||||
if (sorted) {
|
||||
final int insertionPoint = Arrays.binarySearch(data, offset, size(), value);
|
||||
result = insertionPoint < 0 ? -1 : insertionPoint;
|
||||
} else {
|
||||
for (int i = offset; i < index; i++) {
|
||||
if (data[i] == value) {
|
||||
result = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -604,7 +604,7 @@ public class IntListTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIndexOf() {
|
||||
public void testIndexOfOnSortedList() {
|
||||
final IntList list = new IntList();
|
||||
Assert.assertEquals(-1, list.indexOf(0));
|
||||
|
||||
@@ -619,7 +619,28 @@ public class IntListTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIndexOfWithOffset() {
|
||||
public void testIndexOfOnUnsortedList() {
|
||||
final IntList list = IntList.of(2, 0, 1);
|
||||
Assert.assertEquals(1, list.indexOf(0));
|
||||
|
||||
Assert.assertEquals(0, list.indexOf(2));
|
||||
Assert.assertEquals(2, list.indexOf(1));
|
||||
Assert.assertEquals(-1, list.indexOf(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIndexOfWithOffsetOnSortedList() {
|
||||
final IntList list = new IntList();
|
||||
list.addAll(1, 1, 2, 3, 3);
|
||||
Assert.assertEquals(0, list.indexOf(1, 0));
|
||||
Assert.assertEquals(1, list.indexOf(1, 1));
|
||||
Assert.assertEquals(2, list.indexOf(2, 2));
|
||||
Assert.assertEquals(-1, list.indexOf(2, 3));
|
||||
Assert.assertEquals(3, list.indexOf(3, 2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIndexOfWithOffsetOnUnsortedList() {
|
||||
final IntList list = new IntList();
|
||||
list.addAll(0, 2, 0, 2);
|
||||
Assert.assertEquals(1, list.indexOf(2, 0));
|
||||
|
||||
Reference in New Issue
Block a user