View Javadoc
1   package org.opentrafficsim.core.immutablecollections;
2   
3   import java.util.Comparator;
4   import java.util.EnumSet;
5   import java.util.NavigableSet;
6   import java.util.SortedSet;
7   import java.util.TreeSet;
8   
9   /**
10   * An immutable wrapper for a TreeSet.
11   * <p>
12   * Copyright (c) 2013-2016 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
13   * BSD-style license. See <a href="http://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
14   * </p>
15   * $LastChangedDate: 2015-07-24 02:58:59 +0200 (Fri, 24 Jul 2015) $, @version $Revision: 1147 $, by $Author: averbraeck $,
16   * initial version May 7, 2016 <br>
17   * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
18   * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
19   * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a>
20   * @param <E> the type of content of this Set
21   */
22  public class ImmutableTreeSet<E> extends ImmutableAbstractSet<E> implements ImmutableNavigableSet<E>
23  {
24      /** */
25      private static final long serialVersionUID = 20160507L;
26  
27      /**
28       * @param sortedSet the set to use as the immutable set.
29       */
30      public ImmutableTreeSet(final SortedSet<E> sortedSet)
31      {
32          super(new TreeSet<E>(sortedSet));
33      }
34  
35      /**
36       * @param sortedSet the set to use as the immutable set.
37       */
38      public ImmutableTreeSet(final ImmutableSortedSet<E> sortedSet)
39      {
40          this(sortedSet.toSet());
41      }
42  
43      /** {@inheritDoc} */
44      @Override
45      protected final NavigableSet<E> getSet()
46      {
47          return (NavigableSet<E>) super.getSet();
48      }
49  
50      /** {@inheritDoc} */
51      @Override
52      public final NavigableSet<E> toSet()
53      {
54          return new TreeSet<E>(super.getSet());
55      }
56  
57      /** {@inheritDoc} */
58      @Override
59      public final Comparator<? super E> comparator()
60      {
61          return getSet().comparator();
62      }
63  
64      /** {@inheritDoc} */
65      @Override
66      public final ImmutableSortedSet<E> subSet(final E fromElement, final E toElement)
67      {
68          return new ImmutableTreeSet<E>(getSet().subSet(fromElement, toElement));
69      }
70  
71      /** {@inheritDoc} */
72      @Override
73      public final ImmutableSortedSet<E> headSet(final E toElement)
74      {
75          return new ImmutableTreeSet<E>(getSet().headSet(toElement));
76      }
77  
78      /** {@inheritDoc} */
79      @Override
80      public final ImmutableSortedSet<E> tailSet(final E fromElement)
81      {
82          return new ImmutableTreeSet<E>(getSet().tailSet(fromElement));
83      }
84  
85      /** {@inheritDoc} */
86      @Override
87      public final E first()
88      {
89          return getSet().first();
90      }
91  
92      /** {@inheritDoc} */
93      @Override
94      public final E last()
95      {
96          return getSet().last();
97      }
98  
99      /** {@inheritDoc} */
100     @Override
101     public final E lower(final E e)
102     {
103         return getSet().lower(e);
104     }
105 
106     /** {@inheritDoc} */
107     @Override
108     public final E floor(final E e)
109     {
110         return getSet().floor(e);
111     }
112 
113     /** {@inheritDoc} */
114     @Override
115     public final E ceiling(final E e)
116     {
117         return getSet().ceiling(e);
118     }
119 
120     /** {@inheritDoc} */
121     @Override
122     public final E higher(final E e)
123     {
124         return getSet().higher(e);
125     }
126 
127     /** {@inheritDoc} */
128     @Override
129     public final ImmutableNavigableSet<E> descendingSet()
130     {
131         return new ImmutableTreeSet<E>(getSet().descendingSet());
132     }
133 
134     /** {@inheritDoc} */
135     @Override
136     public final ImmutableIterator<E> descendingIterator()
137     {
138         return new ImmutableIterator<E>(getSet().descendingIterator());
139     }
140 
141     /** {@inheritDoc} */
142     @Override
143     public final ImmutableNavigableSet<E> subSet(final E fromElement, final boolean fromInclusive, final E toElement,
144             final boolean toInclusive)
145     {
146         return new ImmutableTreeSet<E>(getSet().subSet(fromElement, fromInclusive, toElement, toInclusive));
147     }
148 
149     /** {@inheritDoc} */
150     @Override
151     public final ImmutableNavigableSet<E> headSet(final E toElement, final boolean inclusive)
152     {
153         return new ImmutableTreeSet<E>(getSet().headSet(toElement, inclusive));
154     }
155 
156     /** {@inheritDoc} */
157     @Override
158     public final ImmutableNavigableSet<E> tailSet(final E fromElement, final boolean inclusive)
159     {
160         return new ImmutableTreeSet<E>(getSet().tailSet(fromElement, inclusive));
161     }
162 
163     /** {@inheritDoc} */
164     @Override
165     public final String toString()
166     {
167         NavigableSet<E> set = getSet();
168         if (null == set)
169         {
170             return "ImmutableTreeSet []";
171         }
172         return "ImmutableTreeSet [" + set.toString() + "]";
173     }
174 
175 }