--- old/src/java.base/share/classes/java/util/Collections.java 2017-12-07 14:44:07.000000000 -0800 +++ new/src/java.base/share/classes/java/util/Collections.java 2017-12-07 14:44:07.000000000 -0800 @@ -32,6 +32,7 @@ import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.IntFunction; import java.util.function.Predicate; import java.util.function.UnaryOperator; import java.util.stream.IntStream; @@ -1027,12 +1028,13 @@ this.c = c; } - public int size() {return c.size();} - public boolean isEmpty() {return c.isEmpty();} - public boolean contains(Object o) {return c.contains(o);} - public Object[] toArray() {return c.toArray();} - public T[] toArray(T[] a) {return c.toArray(a);} - public String toString() {return c.toString();} + public int size() {return c.size();} + public boolean isEmpty() {return c.isEmpty();} + public boolean contains(Object o) {return c.contains(o);} + public Object[] toArray() {return c.toArray();} + public T[] toArray(T[] a) {return c.toArray(a);} + public T[] toArray(IntFunction f) {return c.toArray(f);} + public String toString() {return c.toString();} public Iterator iterator() { return new Iterator() { @@ -2019,6 +2021,9 @@ public T[] toArray(T[] a) { synchronized (mutex) {return c.toArray(a);} } + public T[] toArray(IntFunction f) { + synchronized (mutex) {return c.toArray(f);} + } public Iterator iterator() { return c.iterator(); // Must be manually synched by user! @@ -3048,14 +3053,15 @@ this.type = Objects.requireNonNull(type, "type"); } - public int size() { return c.size(); } - public boolean isEmpty() { return c.isEmpty(); } - public boolean contains(Object o) { return c.contains(o); } - public Object[] toArray() { return c.toArray(); } - public T[] toArray(T[] a) { return c.toArray(a); } - public String toString() { return c.toString(); } - public boolean remove(Object o) { return c.remove(o); } - public void clear() { c.clear(); } + public int size() { return c.size(); } + public boolean isEmpty() { return c.isEmpty(); } + public boolean contains(Object o) { return c.contains(o); } + public Object[] toArray() { return c.toArray(); } + public T[] toArray(T[] a) { return c.toArray(a); } + public T[] toArray(IntFunction f) { return c.toArray(f); } + public String toString() { return c.toString(); } + public boolean remove(Object o) { return c.remove(o); } + public void clear() { c.clear(); } public boolean containsAll(Collection coll) { return c.containsAll(coll); @@ -5553,25 +5559,26 @@ implements Queue, Serializable { private static final long serialVersionUID = 1802017725587941708L; private final Deque q; - AsLIFOQueue(Deque q) { this.q = q; } - public boolean add(E e) { q.addFirst(e); return true; } - public boolean offer(E e) { return q.offerFirst(e); } - public E poll() { return q.pollFirst(); } - public E remove() { return q.removeFirst(); } - public E peek() { return q.peekFirst(); } - public E element() { return q.getFirst(); } - public void clear() { q.clear(); } - public int size() { return q.size(); } - public boolean isEmpty() { return q.isEmpty(); } - public boolean contains(Object o) { return q.contains(o); } - public boolean remove(Object o) { return q.remove(o); } - public Iterator iterator() { return q.iterator(); } - public Object[] toArray() { return q.toArray(); } - public T[] toArray(T[] a) { return q.toArray(a); } - public String toString() { return q.toString(); } - public boolean containsAll(Collection c) {return q.containsAll(c);} - public boolean removeAll(Collection c) {return q.removeAll(c);} - public boolean retainAll(Collection c) {return q.retainAll(c);} + AsLIFOQueue(Deque q) { this.q = q; } + public boolean add(E e) { q.addFirst(e); return true; } + public boolean offer(E e) { return q.offerFirst(e); } + public E poll() { return q.pollFirst(); } + public E remove() { return q.removeFirst(); } + public E peek() { return q.peekFirst(); } + public E element() { return q.getFirst(); } + public void clear() { q.clear(); } + public int size() { return q.size(); } + public boolean isEmpty() { return q.isEmpty(); } + public boolean contains(Object o) { return q.contains(o); } + public boolean remove(Object o) { return q.remove(o); } + public Iterator iterator() { return q.iterator(); } + public Object[] toArray() { return q.toArray(); } + public T[] toArray(T[] a) { return q.toArray(a); } + public T[] toArray(IntFunction f) { return q.toArray(f); } + public String toString() { return q.toString(); } + public boolean containsAll(Collection c) { return q.containsAll(c); } + public boolean removeAll(Collection c) { return q.removeAll(c); } + public boolean retainAll(Collection c) { return q.retainAll(c); } // We use inherited addAll; forwarding addAll would be wrong // Override default methods in Collection