@Nonnull public ImmutableList<ImmutableItem> toList(@Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableList.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableList) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableList<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableList.copyOf(new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }
@Nonnull public ImmutableSet<ImmutableItem> toSet(@Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableSet.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableSet) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableSet<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableSet.copyOf(new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }
@Nonnull public ImmutableList<ImmutableItem> toList(@Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableList.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableList) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableList<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableList.copyOf(new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }
@Nonnull public ImmutableList<ImmutableItem> toList(@Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableList.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableList) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableList<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableList.copyOf(new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }
@Nonnull public ImmutableSet<ImmutableItem> toSet(@Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableSet.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableSet) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableSet<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableSet.copyOf(new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }
@Nonnull public ImmutableSet<ImmutableItem> toSet(@Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableSet.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableSet) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableSet<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableSet.copyOf(new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }
@Nonnull public ImmutableSortedSet<ImmutableItem> toSortedSet(@Nonnull Comparator<? super ImmutableItem> comparator, @Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableSortedSet.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableSortedSet && ((ImmutableSortedSet)iterable).comparator().equals(comparator)) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableSortedSet<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableSortedSet.copyOf(comparator, new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }
@Nonnull public ImmutableSortedSet<ImmutableItem> toSortedSet(@Nonnull Comparator<? super ImmutableItem> comparator, @Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableSortedSet.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableSortedSet && ((ImmutableSortedSet)iterable).comparator().equals(comparator)) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableSortedSet<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableSortedSet.copyOf(comparator, new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }
@Nonnull public ImmutableSortedSet<ImmutableItem> toSortedSet(@Nonnull Comparator<? super ImmutableItem> comparator, @Nullable final Iterable<? extends Item> iterable) { if (iterable == null) { return ImmutableSortedSet.of(); } boolean needsCopy = false; if (iterable instanceof ImmutableSortedSet && ((ImmutableSortedSet)iterable).comparator().equals(comparator)) { for (Item element: iterable) { if (!isImmutable(element)) { needsCopy = true; break; } } } else { needsCopy = true; } if (!needsCopy) { return (ImmutableSortedSet<ImmutableItem>)iterable; } final Iterator<? extends Item> iter = iterable.iterator(); return ImmutableSortedSet.copyOf(comparator, new Iterator<ImmutableItem>() { @Override public boolean hasNext() { return iter.hasNext(); } @Override public ImmutableItem next() { return makeImmutable(iter.next()); } @Override public void remove() { iter.remove(); } }); }