Javolution 6.0.0 java
FilteredCollectionImpl.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 
16 
20 public class FilteredCollectionImpl<E> extends CollectionView<E> {
21 
23  private class IteratorImpl implements Iterator<E> {
24 
25  private boolean ahead; // Indicates if the iterator is ahead (on next element)
27  private E next;
28  private final Iterator<E> targetIterator;
29 
31  this.filter = filter;
32  targetIterator = target().iterator();
33  }
34 
35  @Override
36  public boolean hasNext() {
37  if (ahead) return true;
38  while (targetIterator.hasNext()) {
39  next = targetIterator.next();
40  if (filter.test(next)) {
41  ahead = true;
42  return true;
43  }
44  }
45  return false;
46  }
47 
48  @Override
49  public E next() {
50  hasNext(); // Moves ahead.
51  ahead = false;
52  return next;
53  }
54 
55  @Override
56  public void remove() {
57  targetIterator.remove();
58  }
59  }
60 
61  private static final long serialVersionUID = 0x600L; // Version.
62  protected final Predicate<? super E> filter;
63 
66  super(target);
67  this.filter = filter;
68  }
69 
70  @Override
71  public boolean add(E element) {
72  if (!filter.test(element)) return false;
73  return target().add(element);
74  }
75 
76  @Override
78  return target().comparator();
79  }
80 
81  @SuppressWarnings("unchecked")
82  @Override
83  public boolean contains(Object o) {
84  if (!filter.test((E) o)) return false;
85  return target().contains(o);
86  }
87 
88  @Override
89  public Iterator<E> iterator() {
90  return new IteratorImpl(filter);
91  }
92 
93  @SuppressWarnings("unchecked")
94  @Override
95  public boolean remove(Object o) {
96  if (!filter.test((E) o)) return false;
97  return target().remove(o);
98  }
99 }
javolution.util.internal.collection.FilteredCollectionImpl.comparator
Equality<? super E > comparator()
Definition: FilteredCollectionImpl.java:77
javolution.util.internal.collection.FilteredCollectionImpl.iterator
Iterator< E > iterator()
Definition: FilteredCollectionImpl.java:89
javolution
javolution.util.service
Definition: BitSetService.java:9
javolution.util.internal.collection.FilteredCollectionImpl.IteratorImpl
Definition: FilteredCollectionImpl.java:23
javolution.util.internal.collection.CollectionView
Definition: CollectionView.java:29
javolution.util.internal.collection.FilteredCollectionImpl.IteratorImpl.IteratorImpl
IteratorImpl(Predicate<? super E > filter)
Definition: FilteredCollectionImpl.java:30
javolution.util.internal.collection.FilteredCollectionImpl.IteratorImpl.next
E next
Definition: FilteredCollectionImpl.java:27
javolution.util.internal.collection.FilteredCollectionImpl.IteratorImpl.hasNext
boolean hasNext()
Definition: FilteredCollectionImpl.java:36
javolution.util.internal.collection.FilteredCollectionImpl.IteratorImpl.ahead
boolean ahead
Definition: FilteredCollectionImpl.java:25
javolution.util.service.CollectionService
Definition: CollectionService.java:25
javolution.util.internal.collection.FilteredCollectionImpl.IteratorImpl.targetIterator
final Iterator< E > targetIterator
Definition: FilteredCollectionImpl.java:28
javolution.util.function.Equality
Definition: Equality.java:39
javolution.util.internal.collection.FilteredCollectionImpl.FilteredCollectionImpl
FilteredCollectionImpl(CollectionService< E > target, Predicate<? super E > filter)
Definition: FilteredCollectionImpl.java:64
javolution.util.internal.collection.FilteredCollectionImpl.IteratorImpl.next
E next()
Definition: FilteredCollectionImpl.java:49
javolution.util.internal.collection.FilteredCollectionImpl.add
boolean add(E element)
Definition: FilteredCollectionImpl.java:71
javolution.util.internal.collection.FilteredCollectionImpl.contains
boolean contains(Object o)
Definition: FilteredCollectionImpl.java:83
javolution.util.function.Predicate
Definition: Predicate.java:25
javolution.util.internal.collection.CollectionView.target
CollectionService< E > target
Definition: CollectionView.java:33
javolution.util.function
Definition: Consumer.java:9
javolution.util.function.Predicate.test
boolean test(T param)
javolution.util.internal.collection.FilteredCollectionImpl.filter
final Predicate<? super E > filter
Definition: FilteredCollectionImpl.java:62
javolution.util.internal.collection.FilteredCollectionImpl.IteratorImpl.filter
final Predicate<? super E > filter
Definition: FilteredCollectionImpl.java:26
javolution.util.internal.collection.FilteredCollectionImpl.serialVersionUID
static final long serialVersionUID
Definition: FilteredCollectionImpl.java:61
javolution.util.internal.collection.FilteredCollectionImpl
Definition: FilteredCollectionImpl.java:20
javolution.util
Definition: FastBitSet.java:9