Javolution 6.0.0 java
DistinctCollectionImpl.java
Go to the documentation of this file.
1
/*
2
* Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3
* Copyright (C) 2012 - Javolution (http://javolution.org/)
4
* All rights reserved.
5
*
6
* Permission to use, copy, modify, and distribute this software is
7
* freely granted, provided that this notice is preserved.
8
*/
9
package
javolution.util.internal.collection;
10
11
import
java.util.Iterator;
12
13
import
javolution
.
util
.
FastSet
;
14
import
javolution
.
util
.
function
.
Equality
;
15
import
javolution
.
util
.
service
.
CollectionService
;
16
20
public
class
DistinctCollectionImpl
<E>
extends
CollectionView
<E> {
21
23
private
class
IteratorImpl
implements
Iterator<E> {
24
25
private
boolean
ahead
;
26
private
final
FastSet<E>
iterated
=
new
FastSet<E>
(
comparator
());
27
private
E
next
;
28
private
final
Iterator<E>
targetIterator
=
target
().iterator();
29
30
@Override
31
public
boolean
hasNext
() {
32
if
(
ahead
)
return
true
;
33
while
(
targetIterator
.hasNext()) {
34
next
=
targetIterator
.next();
35
if
(!
iterated
.contains(
next
)) {
36
ahead
=
true
;
37
return
true
;
38
}
39
}
40
return
false
;
41
}
42
43
@Override
44
public
E
next
() {
45
hasNext
();
// Moves ahead.
46
ahead
=
false
;
47
return
next
;
48
}
49
50
@Override
51
public
void
remove
() {
52
targetIterator
.remove();
53
}
54
}
55
56
private
static
final
long
serialVersionUID
= 0x600L;
// Version.
57
58
public
DistinctCollectionImpl
(
CollectionService<E>
target
) {
59
super(
target
);
60
}
61
62
@Override
63
public
boolean
add
(E element) {
64
if
(
target
().
contains
(element))
return
false
;
65
return
target
().add(element);
66
}
67
68
@Override
69
public
void
clear
() {
70
target
().clear();
71
}
72
73
@Override
74
public
Equality<? super E>
comparator
() {
75
return
target
().comparator();
76
}
77
78
@Override
79
public
boolean
contains
(Object o) {
80
return
target
().contains(o);
81
}
82
83
@Override
84
public
boolean
isEmpty
() {
85
return
target
().isEmpty();
86
}
87
88
@Override
89
public
Iterator<E>
iterator
() {
90
return
new
IteratorImpl
();
91
}
92
93
@Override
94
public
boolean
remove
(Object o) {
// Remove all instances.
95
boolean
changed =
false
;
96
while
(
true
) {
97
if
(!
remove
(o))
return
changed;
98
changed =
true
;
99
}
100
}
101
102
}
javolution.util.internal.collection.DistinctCollectionImpl.IteratorImpl.ahead
boolean ahead
Definition:
DistinctCollectionImpl.java:25
javolution.util.internal.collection.DistinctCollectionImpl.serialVersionUID
static final long serialVersionUID
Definition:
DistinctCollectionImpl.java:56
javolution.util.internal.collection.DistinctCollectionImpl.IteratorImpl.targetIterator
final Iterator< E > targetIterator
Definition:
DistinctCollectionImpl.java:28
javolution
javolution.util.service
Definition:
BitSetService.java:9
javolution.util.internal.collection.CollectionView
Definition:
CollectionView.java:29
javolution.util.internal.collection.DistinctCollectionImpl.isEmpty
boolean isEmpty()
Definition:
DistinctCollectionImpl.java:84
javolution.util.internal.collection.DistinctCollectionImpl.IteratorImpl.next
E next()
Definition:
DistinctCollectionImpl.java:44
javolution.util.service.CollectionService
Definition:
CollectionService.java:25
javolution.util.internal.collection.DistinctCollectionImpl.add
boolean add(E element)
Definition:
DistinctCollectionImpl.java:63
javolution.util.internal.collection.DistinctCollectionImpl.DistinctCollectionImpl
DistinctCollectionImpl(CollectionService< E > target)
Definition:
DistinctCollectionImpl.java:58
javolution.util.function.Equality
Definition:
Equality.java:39
javolution.util.internal.collection.DistinctCollectionImpl
Definition:
DistinctCollectionImpl.java:20
javolution.util.internal.collection.DistinctCollectionImpl.IteratorImpl.hasNext
boolean hasNext()
Definition:
DistinctCollectionImpl.java:31
javolution.util.internal.collection.CollectionView.target
CollectionService< E > target
Definition:
CollectionView.java:33
javolution.util.function
Definition:
Consumer.java:9
javolution.util.internal.collection.DistinctCollectionImpl.contains
boolean contains(Object o)
Definition:
DistinctCollectionImpl.java:79
javolution.util.internal.collection.DistinctCollectionImpl.comparator
Equality<? super E > comparator()
Definition:
DistinctCollectionImpl.java:74
javolution.util.internal.collection.DistinctCollectionImpl.IteratorImpl.iterated
final FastSet< E > iterated
Definition:
DistinctCollectionImpl.java:26
javolution.util.internal.collection.DistinctCollectionImpl.clear
void clear()
Definition:
DistinctCollectionImpl.java:69
javolution.util.internal.collection.DistinctCollectionImpl.IteratorImpl.next
E next
Definition:
DistinctCollectionImpl.java:27
javolution.util.internal.collection.DistinctCollectionImpl.IteratorImpl
Definition:
DistinctCollectionImpl.java:23
javolution.util.FastSet
Definition:
FastSet.java:37
javolution.util
Definition:
FastBitSet.java:9
javolution.util.internal.collection.DistinctCollectionImpl.iterator
Iterator< E > iterator()
Definition:
DistinctCollectionImpl.java:89
core-java
src
main
java
javolution
util
internal
collection
DistinctCollectionImpl.java
Generated by
1.8.18