8075509: List.map should return itself if list is unchanged

Fix List.map to match semantics of old Type.map

Reviewed-by: jlahoda
This commit is contained in:
Maurizio Cimadamore 2015-03-19 16:23:21 +00:00
parent 24c51e1e1b
commit c399e03fe2

View File

@ -417,12 +417,15 @@ public class List<A> extends AbstractCollection<A> implements java.util.List<A>
return last;
}
@SuppressWarnings("unchecked")
public <Z> List<Z> map(Function<A, Z> mapper) {
ListBuffer<Z> buf = new ListBuffer<>();
for (A a : this) {
buf.add(mapper.apply(a));
if (nonEmpty()) {
List<Z> tail1 = tail.map(mapper);
Z head1 = mapper.apply(head);
if (tail1 != tail || head1 != head)
return tail1.prepend(head1);
}
return buf.toList();
return (List<Z>)this;
}
@SuppressWarnings("unchecked")