2004-09-23 Mark Wielaard <mark@klomp.org>

* java/util/Collections.java
	(binarySearch(List, Object, Comparator)): Explicitly
	reverse direction in list iterator.
	(rotate): Just return when list is empty.

From-SVN: r87970
This commit is contained in:
Mark Wielaard 2004-09-23 18:01:46 +00:00 committed by Michael Koch
parent fd5f23d3a6
commit 093942ac67
2 changed files with 24 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2004-09-23 Mark Wielaard <mark@klomp.org>
* java/util/Collections.java
(binarySearch(List, Object, Comparator)): Explicitly
reverse direction in list iterator.
(rotate): Just return when list is empty.
2004-09-23 Tom Tromey <tromey@redhat.com>
PR java/17329:

View File

@ -574,14 +574,26 @@ public class Collections
{
ListIterator itr = l.listIterator();
int i = 0;
Object o = itr.next(); // Assumes list is not empty (see isSequential)
boolean forward = true;
while (low <= hi)
{
pos = (low + hi) >> 1;
if (i < pos)
for ( ; i != pos; i++, itr.next());
{
if (!forward)
itr.next(); // Changing direction first.
for ( ; i != pos; i++, o = itr.next());
forward = true;
}
else
for ( ; i != pos; i--, itr.previous());
final int d = compare(key, itr.next(), c);
{
if (forward)
itr.previous(); // Changing direction first.
for ( ; i != pos; i--, o = itr.previous());
forward = false;
}
final int d = compare(key, o, c);
if (d == 0)
return pos;
else if (d < 0)
@ -1110,6 +1122,8 @@ public class Collections
public static void rotate(List list, int distance)
{
int size = list.size();
if (size == 0)
return;
distance %= size;
if (distance == 0)
return;