@Override public ImmutableList<V> asList() { final ImmutableList<Entry<K, V>> entryList = map.entrySet().asList(); return new ImmutableAsList<V>() { @Override public V get(int index) { return entryList.get(index).getValue(); } @Override ImmutableCollection<V> delegateCollection() { return ImmutableMapValues.this; } }; }
@Override public List<E> get(int index) { return axes.get(index).asList(); }
@Override public Iterator<E> iterator() { return new UnmodifiableIterator<E>() { final ImmutableList<E> elements = inputSet.keySet().asList(); int remainingSetBits = mask; @Override public boolean hasNext() { return remainingSetBits != 0; } @Override public E next() { int index = Integer.numberOfTrailingZeros(remainingSetBits); if (index == 32) { throw new NoSuchElementException(); } remainingSetBits &= ~(1 << index); return elements.get(index); } }; }
@Override Cell<R, C, V> getCell(int index) { int rowIndex = cellRowIndices[index]; Map.Entry<R, Map<C, V>> rowEntry = rowMap.entrySet().asList().get(rowIndex); ImmutableMap<C, V> row = (ImmutableMap<C, V>) rowEntry.getValue(); int columnIndex = cellColumnInRowIndices[index]; Map.Entry<C, V> colEntry = row.entrySet().asList().get(columnIndex); return cellOf(rowEntry.getKey(), colEntry.getKey(), colEntry.getValue()); }
@Override K get(int index) { return map.entrySet().asList().get(index).getKey(); }
K getKey(int index) { return keyIndex.keySet().asList().get(index); }
@Override Cell<R, C, V> getCell(int index) { int rowIndex = cellRowIndices[index]; int columnIndex = cellColumnIndices[index]; R rowKey = rowKeySet().asList().get(rowIndex); C columnKey = columnKeySet().asList().get(columnIndex); V value = values[rowIndex][columnIndex]; return cellOf(rowKey, columnKey, value); }
@Override Entry<E> getEntry(int index) { return forward.entrySet().asList().reverse().get(index); }
@Override public Entry<K, V> firstEntry() { return isEmpty() ? null : entrySet().asList().get(0); }
K getKey(int index) { return keyToIndex().keySet().asList().get(index); }
@Override public Entry<K, V> lastEntry() { return isEmpty() ? null : entrySet().asList().get(size() - 1); }
/** * Returns an immutable sorted multiset containing the given elements sorted by the given {@code * Comparator}. This method iterates over {@code elements} at most once. * * <p>Despite the method name, this method attempts to avoid actually copying the data when it is * safe to do so. The exact circumstances under which a copy will or will not be performed are * undocumented and subject to change. * * @throws NullPointerException if {@code comparator} or any of {@code elements} is null */ public static <E> ImmutableSortedMultiset<E> copyOf( Comparator<? super E> comparator, Iterable<? extends E> elements) { if (elements instanceof ImmutableSortedMultiset) { @SuppressWarnings("unchecked") // immutable collections are always safe for covariant casts ImmutableSortedMultiset<E> multiset = (ImmutableSortedMultiset<E>) elements; if (comparator.equals(multiset.comparator())) { if (multiset.isPartialView()) { return copyOfSortedEntries(comparator, multiset.entrySet().asList()); } else { return multiset; } } } elements = Lists.newArrayList(elements); // defensive copy TreeMultiset<E> sortedCopy = TreeMultiset.create(checkNotNull(comparator)); Iterables.addAll(sortedCopy, elements); return copyOfSortedEntries(comparator, sortedCopy.entrySet()); }