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
|
* if offset is negative, or larger than the size of the list
|
||||||
*/
|
*/
|
||||||
public int indexOf(final int value, final int offset) {
|
public int indexOf(final int value, final int offset) {
|
||||||
|
|
||||||
|
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++) {
|
for (int i = offset; i < index; i++) {
|
||||||
if (data[i] == value) {
|
if (data[i] == value) {
|
||||||
return i;
|
result = i;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return -1;
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -604,7 +604,7 @@ public class IntListTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIndexOf() {
|
public void testIndexOfOnSortedList() {
|
||||||
final IntList list = new IntList();
|
final IntList list = new IntList();
|
||||||
Assert.assertEquals(-1, list.indexOf(0));
|
Assert.assertEquals(-1, list.indexOf(0));
|
||||||
|
|
||||||
@@ -619,7 +619,28 @@ public class IntListTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@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();
|
final IntList list = new IntList();
|
||||||
list.addAll(0, 2, 0, 2);
|
list.addAll(0, 2, 0, 2);
|
||||||
Assert.assertEquals(1, list.indexOf(2, 0));
|
Assert.assertEquals(1, list.indexOf(2, 0));
|
||||||
|
|||||||
Reference in New Issue
Block a user