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
11
12
13
14
15
16
17
18
19
20
21
22 public class ImmutableTreeSet<E> extends ImmutableAbstractSet<E> implements ImmutableNavigableSet<E>
23 {
24
25 private static final long serialVersionUID = 20160507L;
26
27
28
29
30 public ImmutableTreeSet(final SortedSet<E> sortedSet)
31 {
32 super(new TreeSet<E>(sortedSet));
33 }
34
35
36
37
38 public ImmutableTreeSet(final ImmutableSortedSet<E> sortedSet)
39 {
40 this(sortedSet.toSet());
41 }
42
43
44 @Override
45 protected final NavigableSet<E> getSet()
46 {
47 return (NavigableSet<E>) super.getSet();
48 }
49
50
51 @Override
52 public final NavigableSet<E> toSet()
53 {
54 return new TreeSet<E>(super.getSet());
55 }
56
57
58 @Override
59 public final Comparator<? super E> comparator()
60 {
61 return getSet().comparator();
62 }
63
64
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
72 @Override
73 public final ImmutableSortedSet<E> headSet(final E toElement)
74 {
75 return new ImmutableTreeSet<E>(getSet().headSet(toElement));
76 }
77
78
79 @Override
80 public final ImmutableSortedSet<E> tailSet(final E fromElement)
81 {
82 return new ImmutableTreeSet<E>(getSet().tailSet(fromElement));
83 }
84
85
86 @Override
87 public final E first()
88 {
89 return getSet().first();
90 }
91
92
93 @Override
94 public final E last()
95 {
96 return getSet().last();
97 }
98
99
100 @Override
101 public final E lower(final E e)
102 {
103 return getSet().lower(e);
104 }
105
106
107 @Override
108 public final E floor(final E e)
109 {
110 return getSet().floor(e);
111 }
112
113
114 @Override
115 public final E ceiling(final E e)
116 {
117 return getSet().ceiling(e);
118 }
119
120
121 @Override
122 public final E higher(final E e)
123 {
124 return getSet().higher(e);
125 }
126
127
128 @Override
129 public final ImmutableNavigableSet<E> descendingSet()
130 {
131 return new ImmutableTreeSet<E>(getSet().descendingSet());
132 }
133
134
135 @Override
136 public final ImmutableIterator<E> descendingIterator()
137 {
138 return new ImmutableIterator<E>(getSet().descendingIterator());
139 }
140
141
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
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
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
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 }