@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof AbstractImmutableSet<?>) { // all our immutable set implementations have fast hashcode AbstractImmutableSet<?> that = (AbstractImmutableSet<?>) obj; if (hashCode() != that.hashCode()) { return false; } return equalsSet(that); } if (obj instanceof Set<?>) { return equalsSet((Set<?>) obj); } return false; }
private void storeElement(T element) { for (int i = element.hashCode();; i++) { int index = getTableIndex(i); if (table[index] == null) { table[index] = element; return; } } }
public ImmutableHashSet(Set<T> data) { Preconditions.checkNotNull(data); Preconditions.checkArgument(!data.isEmpty(), data); Preconditions.checkArgument(data.size() < MAX_SIZE, "Collection too large: " + data.size()); this.size = data.size(); this.table = new Object[tableSize(size)]; for (T element : data) { storeElement(element); } this.hashCode = data.hashCode(); }
private static <T> Set<T> from(Set<T> set) { switch (set.size()) { case 0: return Collections.emptySet(); case 1: return new ImmutableTinySet.Singleton<T>(set); case 2: return new ImmutableTinySet.Doubleton<T>(set); case 3: return new ImmutableTinySet.Tripleton<T>(set); default: return new ImmutableHashSet<>(set); } }
public ImmutableHashSet(Set<T> data) { Preconditions.checkNotNull(data); Preconditions.checkArgument(!data.isEmpty(), data); Preconditions.checkArgument(data.size() < MAX_SIZE, "Collection too large: " + data.size()); this.size = data.size(); this.table = new Object[tableSize(size)]; for (T element : data) { storeElement(element); } this.hashCode = data.hashCode(); }
private static <T> Set<T> from(Set<T> set) { switch (set.size()) { case 0: return Collections.emptySet(); case 1: return new ImmutableTinySet.Singleton<T>(set); case 2: return new ImmutableTinySet.Doubleton<T>(set); case 3: return new ImmutableTinySet.Tripleton<T>(set); default: return new ImmutableHashSet<>(set); } }
public ImmutableHashSet(Set<T> data) { Preconditions.checkNotNull(data); Preconditions.checkArgument(!data.isEmpty(), data); Preconditions.checkArgument(data.size() < MAX_SIZE, "Collection too large: " + data.size()); this.size = data.size(); this.table = new Object[tableSize(size)]; for (T element : data) { storeElement(element); } this.hashCode = data.hashCode(); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof AbstractImmutableSet<?>) { // all our immutable set implementations have fast hashcode AbstractImmutableSet<?> that = (AbstractImmutableSet<?>) obj; if (hashCode() != that.hashCode()) { return false; } return equalsSet(that); } if (obj instanceof Set<?>) { return equalsSet((Set<?>) obj); } return false; }
private void storeElement(T element) { for (int i = element.hashCode();; i++) { int index = getTableIndex(i); if (table[index] == null) { table[index] = element; return; } } }
private static <T> Set<T> from(Set<T> set) { switch (set.size()) { case 0: return Collections.emptySet(); case 1: return new ImmutableTinySet.Singleton<T>(set); case 2: return new ImmutableTinySet.Doubleton<T>(set); case 3: return new ImmutableTinySet.Tripleton<T>(set); default: return new ImmutableHashSet<>(set); } }
public ImmutableHashSet(Set<T> data) { Preconditions.checkNotNull(data); Preconditions.checkArgument(!data.isEmpty(), data); Preconditions.checkArgument(data.size() < MAX_SIZE, "Collection too large: " + data.size()); this.size = data.size(); this.table = new Object[tableSize(size)]; for (T element : data) { storeElement(element); } this.hashCode = data.hashCode(); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof AbstractImmutableSet<?>) { // all our immutable set implementations have fast hashcode AbstractImmutableSet<?> that = (AbstractImmutableSet<?>) obj; if (hashCode() != that.hashCode()) { return false; } return equalsSet(that); } if (obj instanceof Set<?>) { return equalsSet((Set<?>) obj); } return false; }
private void storeElement(T element) { for (int i = element.hashCode();; i++) { int index = getTableIndex(i); if (table[index] == null) { table[index] = element; return; } } }
private static <T> Set<T> from(Set<T> set) { switch (set.size()) { case 0: return Collections.emptySet(); case 1: return new ImmutableTinySet.Singleton<T>(set); case 2: return new ImmutableTinySet.Doubleton<T>(set); case 3: return new ImmutableTinySet.Tripleton<T>(set); default: return new ImmutableHashSet<>(set); } }
public ImmutableHashSet(Set<T> data) { Preconditions.checkNotNull(data); Preconditions.checkArgument(!data.isEmpty(), data); Preconditions.checkArgument(data.size() < MAX_SIZE, "Collection too large: " + data.size()); this.size = data.size(); this.table = new Object[tableSize(size)]; for (T element : data) { storeElement(element); } this.hashCode = data.hashCode(); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof AbstractImmutableSet<?>) { // all our immutable set implementations have fast hashcode AbstractImmutableSet<?> that = (AbstractImmutableSet<?>) obj; if (hashCode() != that.hashCode()) { return false; } return equalsSet(that); } if (obj instanceof Set<?>) { return equalsSet((Set<?>) obj); } return false; }
private void storeElement(T element) { for (int i = element.hashCode();; i++) { int index = getTableIndex(i); if (table[index] == null) { table[index] = element; return; } } }
private static <T> Set<T> from(Set<T> set) { switch (set.size()) { case 0: return Collections.emptySet(); case 1: return new ImmutableTinySet.Singleton<T>(set); case 2: return new ImmutableTinySet.Doubleton<T>(set); case 3: return new ImmutableTinySet.Tripleton<T>(set); default: return new ImmutableHashSet<>(set); } }
public ImmutableHashSet(Set<T> data) { Preconditions.checkNotNull(data); Preconditions.checkArgument(!data.isEmpty(), data); Preconditions.checkArgument(data.size() < MAX_SIZE, "Collection too large: " + data.size()); this.size = data.size(); this.table = new Object[tableSize(size)]; for (T element : data) { storeElement(element); } this.hashCode = data.hashCode(); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof AbstractImmutableSet<?>) { // all our immutable set implementations have fast hashcode AbstractImmutableSet<?> that = (AbstractImmutableSet<?>) obj; if (hashCode() != that.hashCode()) { return false; } return equalsSet(that); } if (obj instanceof Set<?>) { return equalsSet((Set<?>) obj); } return false; }