1 package org.djutils.immutablecollections;
2
3 import java.util.Collection;
4 import java.util.Comparator;
5 import java.util.NavigableSet;
6 import java.util.TreeSet;
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class ImmutableTreeSet<E> extends ImmutableAbstractSet<E> implements ImmutableNavigableSet<E>
22 {
23
24 private static final long serialVersionUID = 20160507L;
25
26
27
28
29 public ImmutableTreeSet(final Collection<? extends E> sortedSet)
30 {
31 super(new TreeSet<E>(sortedSet), Immutable.COPY);
32 }
33
34
35
36
37
38
39 public ImmutableTreeSet(final NavigableSet<E> treeSet, final Immutable copyOrWrap)
40 {
41 super(copyOrWrap == Immutable.COPY ? new TreeSet<E>(treeSet) : treeSet, copyOrWrap);
42 }
43
44
45
46
47 public ImmutableTreeSet(final ImmutableAbstractSet<E> immutableSortedSet)
48 {
49 super(new TreeSet<E>(immutableSortedSet.getCollection()), Immutable.COPY);
50 }
51
52
53
54
55
56
57 public ImmutableTreeSet(final ImmutableTreeSet<E> immutableTreeSet, final Immutable copyOrWrap)
58 {
59 super(copyOrWrap == Immutable.COPY ? new TreeSet<E>(immutableTreeSet.getCollection())
60 : immutableTreeSet.getCollection(), copyOrWrap);
61 }
62
63
64 @Override
65 public final NavigableSet<E> toSet()
66 {
67 return new TreeSet<E>(getCollection());
68 }
69
70
71 @Override
72 protected NavigableSet<E> getCollection()
73 {
74 return (NavigableSet<E>) super.getCollection();
75 }
76
77
78 @Override
79 public final Comparator<? super E> comparator()
80 {
81 return getCollection().comparator();
82 }
83
84
85 @Override
86 public final ImmutableSortedSet<E> subSet(final E fromElement, final E toElement)
87 {
88 return new ImmutableTreeSet<E>(getCollection().subSet(fromElement, toElement));
89 }
90
91
92 @Override
93 public final ImmutableSortedSet<E> headSet(final E toElement)
94 {
95 return new ImmutableTreeSet<E>(getCollection().headSet(toElement));
96 }
97
98
99 @Override
100 public final ImmutableSortedSet<E> tailSet(final E fromElement)
101 {
102 return new ImmutableTreeSet<E>(getCollection().tailSet(fromElement));
103 }
104
105
106 @Override
107 public final E first()
108 {
109 return getCollection().first();
110 }
111
112
113 @Override
114 public final E last()
115 {
116 return getCollection().last();
117 }
118
119
120 @Override
121 public final E lower(final E e)
122 {
123 return getCollection().lower(e);
124 }
125
126
127 @Override
128 public final E floor(final E e)
129 {
130 return getCollection().floor(e);
131 }
132
133
134 @Override
135 public final E ceiling(final E e)
136 {
137 return getCollection().ceiling(e);
138 }
139
140
141 @Override
142 public final E higher(final E e)
143 {
144 return getCollection().higher(e);
145 }
146
147
148 @Override
149 public final ImmutableNavigableSet<E> descendingSet()
150 {
151 return new ImmutableTreeSet<E>(getCollection().descendingSet());
152 }
153
154
155 @Override
156 public final ImmutableIterator<E> descendingIterator()
157 {
158 return new ImmutableIterator<E>(getCollection().descendingIterator());
159 }
160
161
162 @Override
163 public final ImmutableNavigableSet<E> subSet(final E fromElement, final boolean fromInclusive, final E toElement,
164 final boolean toInclusive)
165 {
166 return new ImmutableTreeSet<E>(getCollection().subSet(fromElement, fromInclusive, toElement, toInclusive));
167 }
168
169
170 @Override
171 public final ImmutableNavigableSet<E> headSet(final E toElement, final boolean inclusive)
172 {
173 return new ImmutableTreeSet<E>(getCollection().headSet(toElement, inclusive));
174 }
175
176
177 @Override
178 public final ImmutableNavigableSet<E> tailSet(final E fromElement, final boolean inclusive)
179 {
180 return new ImmutableTreeSet<E>(getCollection().tailSet(fromElement, inclusive));
181 }
182
183
184 @Override
185 public final String toString()
186 {
187 NavigableSet<E> set = getCollection();
188 if (null == set)
189 {
190 return "ImmutableTreeSet []";
191 }
192 return "ImmutableTreeSet [" + set.toString() + "]";
193 }
194
195 }