744 |
|
} |
745 |
|
|
746 |
|
/** |
747 |
< |
* Version of firstOfMode used by Spliterator |
747 |
> |
* Version of firstOfMode used by Spliterator. Callers must |
748 |
> |
* recheck if the returned node's item field is null or |
749 |
> |
* self-linked before using. |
750 |
|
*/ |
751 |
|
final Node firstDataNode() { |
752 |
|
for (Node p = head; p != null;) { |
1039 |
|
Object[] a = new Object[n]; |
1040 |
|
int i = 0; |
1041 |
|
do { |
1042 |
< |
if ((a[i] = p.item) != null) |
1042 |
> |
Object e = p.item; |
1043 |
> |
if (e != p && (a[i] = e) != null) |
1044 |
|
++i; |
1045 |
|
if (p == (p = p.next)) |
1046 |
|
p = q.firstDataNode(); |
1068 |
|
exhausted = true; |
1069 |
|
do { |
1070 |
|
Object e = p.item; |
1071 |
+ |
if (e != null && e != p) |
1072 |
+ |
action.accept((E)e); |
1073 |
|
if (p == (p = p.next)) |
1074 |
|
p = q.firstDataNode(); |
1070 |
– |
if (e != null) |
1071 |
– |
action.accept((E)e); |
1075 |
|
} while (p != null); |
1076 |
|
} |
1077 |
|
} |
1085 |
|
((p = current) != null || (p = q.firstDataNode()) != null)) { |
1086 |
|
Object e; |
1087 |
|
do { |
1088 |
< |
e = p.item; |
1088 |
> |
if ((e = p.item) == p) |
1089 |
> |
e = null; |
1090 |
|
if (p == (p = p.next)) |
1091 |
|
p = q.firstDataNode(); |
1092 |
|
} while (e == null && p != null); |