guava-16.0.1.jar
登录
|
com.google.guava:guava:16.0.1
META-INF
com
google
thirdparty
common
io
escape
base
math
html
reflect
cache
hash
util
net
collect
ImmutableSortedMapFauxverideShim.java
AllEqualOrdering.java
NullsFirstOrdering.java
ForwardingTable.java
ImmutableAsList.java
ForwardingNavigableSet.java
Sets.java
ForwardingMultimap.java
ImmutableEnumSet.java
MapMakerInternalMap.java
HashBiMap.java
HashMultimap.java
GeneralRange.java
package-info.java
SortedMultisets.java
ForwardingMap.java
ObjectArrays.java
AbstractIterator.java
ForwardingConcurrentMap.java
ForwardingBlockingDeque.java
RegularImmutableSet.java
ComparisonChain.java
EmptyImmutableSortedMap.java
BinaryTreeTraverser.java
HashMultiset.java
LinkedListMultimap.java
FilteredKeyListMultimap.java
FilteredKeySetMultimap.java
SingletonImmutableList.java
TreeTraverser.java
ImmutableEntry.java
RegularImmutableBiMap.java
FilteredEntrySetMultimap.java
Tables.java
ForwardingIterator.java
SortedIterable.java
EmptyImmutableSortedSet.java
RangeSet.java
SingletonImmutableTable.java
RegularImmutableList.java
RegularContiguousSet.java
ForwardingSetMultimap.java
ReverseNaturalOrdering.java
ConcurrentHashMultiset.java
ImmutableMultimap.java
UnmodifiableIterator.java
StandardRowSortedTable.java
Synchronized.java
ImmutableRangeMap.java
ContiguousSet.java
ImmutableMap.java
RegularImmutableSortedMap.java
LinkedHashMultiset.java
RegularImmutableSortedSet.java
TreeBasedTable.java
AbstractMapEntry.java
Multisets.java
Collections2.java
ForwardingListMultimap.java
Queues.java
ForwardingMapEntry.java
DescendingMultiset.java
HashBasedTable.java
SortedLists.java
ComparatorOrdering.java
SortedSetMultimap.java
ForwardingDeque.java
CompoundOrdering.java
AbstractSequentialIterator.java
ImmutableRangeSet.java
SortedMapDifference.java
ForwardingObject.java
ByFunctionOrdering.java
AbstractNavigableMap.java
DescendingImmutableSortedSet.java
AbstractMapBasedMultimap.java
ImmutableMapKeySet.java
ImmutableSortedMap.java
PeekingIterator.java
Table.java
ImmutableSortedSetFauxverideShim.java
AbstractListMultimap.java
ForwardingSortedMap.java
EnumBiMap.java
Range.java
Lists.java
ImmutableListMultimap.java
WellBehavedMap.java
AbstractMultimap.java
FilteredMultimap.java
UnmodifiableListIterator.java
ImmutableEnumMap.java
MapConstraint.java
ForwardingNavigableMap.java
SetMultimap.java
Interners.java
Iterators.java
MultimapBuilder.java
EmptyImmutableSet.java
Constraints.java
ImmutableList.java
SortedMultiset.java
ForwardingList.java
ForwardingImmutableCollection.java
ForwardingImmutableSet.java
ForwardingMultiset.java
AbstractTable.java
Cut.java
AbstractRangeSet.java
ImmutableSet.java
Serialization.java
LexicographicalOrdering.java
UnmodifiableSortedMultiset.java
FluentIterable.java
AbstractSortedSetMultimap.java
RowSortedTable.java
GenericMapMaker.java
AbstractSetMultimap.java
TreeRangeMap.java
ForwardingSet.java
EmptyContiguousSet.java
TransformedIterator.java
EnumMultiset.java
Iterables.java
ImmutableMapEntrySet.java
ImmutableSortedMultiset.java
EmptyImmutableBiMap.java
DescendingImmutableSortedMultiset.java
SingletonImmutableBiMap.java
Maps.java
Ordering.java
ForwardingSortedSet.java
RegularImmutableMap.java
ForwardingSortedSetMultimap.java
AbstractMapBasedMultiset.java
Multimap.java
AbstractMultiset.java
ForwardingImmutableList.java
BiMap.java
RegularImmutableAsList.java
Interner.java
ComputingConcurrentHashMap.java
Platform.java
ComputationException.java
EmptyImmutableSortedMultiset.java
ForwardingCollection.java
Multiset.java
ImmutableMapValues.java
ReverseOrdering.java
TransformedListIterator.java
SparseImmutableTable.java
ImmutableMapEntry.java
BoundType.java
EmptyImmutableSetMultimap.java
TreeRangeSet.java
MapDifference.java
AbstractIndexedListIterator.java
ListMultimap.java
MinMaxPriorityQueue.java
CartesianList.java
EvictingQueue.java
ClassToInstanceMap.java
Constraint.java
TreeMultiset.java
MapConstraints.java
GwtTransient.java
AbstractBiMap.java
NaturalOrdering.java
FilteredEntryMultimap.java
RangeMap.java
ImmutableMultiset.java
ImmutableClassToInstanceMap.java
Multimaps.java
SingletonImmutableSet.java
FilteredSetMultimap.java
DenseImmutableTable.java
ForwardingImmutableMap.java
SortedMultisetBridge.java
RegularImmutableMultiset.java
ImmutableSortedAsList.java
ImmutableSortedMultisetFauxverideShim.java
DiscreteDomain.java
StandardTable.java
ForwardingListIterator.java
ImmutableBiMap.java
AbstractSortedKeySortedSetMultimap.java
RegularImmutableSortedMultiset.java
ExplicitOrdering.java
FilteredKeyMultimap.java
FilteredMultimapValues.java
LinkedHashMultimap.java
RegularImmutableTable.java
EnumHashBiMap.java
EmptyImmutableListMultimap.java
ImmutableSortedSet.java
ImmutableTable.java
ImmutableSetMultimap.java
ForwardingQueue.java
UsingToStringOrdering.java
MapMaker.java
Hashing.java
NullsLastOrdering.java
ArrayTable.java
AbstractSortedMultiset.java
SortedIterables.java
MutableClassToInstanceMap.java
Count.java
ArrayListMultimap.java
ForwardingSortedMultiset.java
TreeMultimap.java
CollectPreconditions.java
ImmutableCollection.java
eventbus
primitives
annotations
xml
CartesianList.java
清空
类结构
/* * Copyright (C) 2012 The Guava Authors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.common.collect; import static com.google.common.base.
Preconditions
.checkElementIndex; import com.google.common.annotations.
GwtCompatible
; import com.google.common.math.
IntMath
; import java.util.
AbstractList
; import java.util.
List
; import java.util.
ListIterator
; import java.util.
RandomAccess
; import javax.annotation.
Nullable
; /** * Implementation of {@link Lists#cartesianProduct(List)}. * * @author Louis Wasserman */ @
GwtCompatible
final class
CartesianList
<E> extends
AbstractList
<
List
<E>> implements
RandomAccess
{ private transient final
ImmutableList
<
List
<E>>
axes
; private transient final int[]
axesSizeProduct
; static <E>
List
<
List
<E>>
create
(
List
<? extends
List
<? extends E>>
lists
) {
ImmutableList
.
Builder
<
List
<E>>
axesBuilder
= new
ImmutableList
.
Builder
<
List
<E>>(
lists
.
size
()); for (
List
<? extends E>
list
:
lists
) {
List
<E>
copy
=
ImmutableList
.
copyOf
(
list
); if (
copy
.
isEmpty
()) { return
ImmutableList
.
of
(); }
axesBuilder
.
add
(
copy
); } return new
CartesianList
<E>(
axesBuilder
.
build
()); }
CartesianList
(
ImmutableList
<
List
<E>>
axes
) { this.
axes
=
axes
; int[]
axesSizeProduct
= new int[
axes
.
size
() + 1];
axesSizeProduct
[
axes
.
size
()] = 1; try { for (int
i
=
axes
.
size
() - 1;
i
>= 0;
i
--) {
axesSizeProduct
[
i
] =
IntMath
.
checkedMultiply
(
axesSizeProduct
[
i
+ 1],
axes
.
get
(
i
).
size
()); } } catch (
ArithmeticException
e
) { throw new
IllegalArgumentException
( "Cartesian product too large; must have size at most Integer.MAX_VALUE"); } this.
axesSizeProduct
=
axesSizeProduct
; } private int
getAxisIndexForProductIndex
(int
index
, int
axis
) { return (
index
/
axesSizeProduct
[
axis
+ 1]) %
axes
.
get
(
axis
).
size
(); } @
Override
public
ImmutableList
<E>
get
(final int
index
) {
checkElementIndex
(
index
,
size
()); return new
ImmutableList
<E>() { @
Override
public int
size
() { return
axes
.
size
(); } @
Override
public E
get
(int
axis
) {
checkElementIndex
(
axis
,
size
()); int
axisIndex
=
getAxisIndexForProductIndex
(
index
,
axis
); return
axes
.
get
(
axis
).
get
(
axisIndex
); } @
Override
boolean
isPartialView
() { return true; } }; } @
Override
public int
size
() { return
axesSizeProduct
[0]; } @
Override
public boolean
contains
(@
Nullable
Object
o
) { if (!(
o
instanceof
List
)) { return false; }
List
<?>
list
= (
List
<?>)
o
; if (
list
.
size
() !=
axes
.
size
()) { return false; }
ListIterator
<?>
itr
=
list
.
listIterator
(); while (
itr
.
hasNext
()) { int
index
=
itr
.
nextIndex
(); if (!
axes
.
get
(
index
).
contains
(
itr
.
next
())) { return false; } } return true; } }
查找资源
Jre/Lib
输入类名或文件名
类结构窗口