1090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2008 The Guava Authors 3090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * 4090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 5090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * you may not use this file except in compliance with the License. 6090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * You may obtain a copy of the License at 7090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * 8090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 9090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * 10090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * Unless required by applicable law or agreed to in writing, software 11090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 12090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * See the License for the specific language governing permissions and 14090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * limitations under the License. 15090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson */ 16090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 17090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilsonpackage com.google.common.collect; 18090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 19090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilsonimport com.google.common.annotations.GwtCompatible; 20090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 21090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilsonimport java.util.Collection; 22090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilsonimport java.util.Comparator; 23090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilsonimport java.util.NoSuchElementException; 24090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilsonimport java.util.Set; 25090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 26090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilsonimport javax.annotation.Nullable; 27090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 28090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson/** 29090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * An empty immutable sorted set. 30bfe2dd089341dcb4c1fb65a5b6b077ad0ebbf6dcDan Egnor * 31090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson * @author Jared Levy 32090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson */ 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible(serializable = true, emulated = true) 34090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson@SuppressWarnings("serial") // uses writeReplace(), not default serialization 35090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilsonclass EmptyImmutableSortedSet<E> extends ImmutableSortedSet<E> { 36090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson EmptyImmutableSortedSet(Comparator<? super E> comparator) { 37090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson super(comparator); 38090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 39090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 41090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson public int size() { 42090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return 0; 43090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 44090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 45090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public boolean isEmpty() { 46090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return true; 47090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 48090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 49090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public boolean contains(Object target) { 50090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return false; 51090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 52090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 53090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public UnmodifiableIterator<E> iterator() { 54090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return Iterators.emptyIterator(); 55090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 56090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override boolean isPartialView() { 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return false; 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 61090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson private static final Object[] EMPTY_ARRAY = new Object[0]; 62090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 63090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public Object[] toArray() { 64090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return EMPTY_ARRAY; 65090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 66090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 67090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public <T> T[] toArray(T[] a) { 68090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson if (a.length > 0) { 69090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson a[0] = null; 70090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 71090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return a; 72090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 73090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 74090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public boolean containsAll(Collection<?> targets) { 75090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return targets.isEmpty(); 76090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 77090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 78090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public boolean equals(@Nullable Object object) { 79090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson if (object instanceof Set) { 80090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson Set<?> that = (Set<?>) object; 81090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return that.isEmpty(); 82090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 83090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return false; 84090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 85090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 86090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public int hashCode() { 87090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return 0; 88090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 89090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 90090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson @Override public String toString() { 91090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return "[]"; 92090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 93090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 95090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson public E first() { 96090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson throw new NoSuchElementException(); 97090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 98090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 100090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson public E last() { 101090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson throw new NoSuchElementException(); 102090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 103090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableSortedSet<E> headSetImpl(E toElement, boolean inclusive) { 106090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return this; 107090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 108090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableSortedSet<E> subSetImpl( 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { 112090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return this; 113090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 114090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableSortedSet<E> tailSetImpl(E fromElement, boolean inclusive) { 117090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson return this; 118090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson } 119090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override int indexOf(@Nullable Object target) { 121bfe2dd089341dcb4c1fb65a5b6b077ad0ebbf6dcDan Egnor return -1; 122bfe2dd089341dcb4c1fb65a5b6b077ad0ebbf6dcDan Egnor } 123090f9b4c879985bc747c214f82c62471e60c7742Jesse Wilson} 124