1 package org.opentrafficsim.road.gtu.lane.perception;
2
3 import java.util.Iterator;
4 import java.util.NoSuchElementException;
5 import java.util.TreeSet;
6 import java.util.function.Supplier;
7
8 import org.opentrafficsim.road.gtu.lane.LaneBasedGTU;
9 import org.opentrafficsim.road.gtu.lane.perception.headway.Headway;
10 import org.opentrafficsim.road.network.OTSRoadNetwork;
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 @Deprecated
26 public class SortedSetPerceptionIterable<H extends Headway> extends TreeSet<H> implements PerceptionCollectable<H, LaneBasedGTU>
27 {
28
29
30 private static final long serialVersionUID = 20180219L;
31
32
33 private final OTSRoadNetwork network;
34
35
36
37
38
39 public SortedSetPerceptionIterable(final OTSRoadNetwork otsNetwork)
40 {
41 this.network = otsNetwork;
42 }
43
44
45 @Override
46 public <C, I> C collect(final Supplier<I> identity, final PerceptionAccumulator<? super LaneBasedGTU, I> accumulator,
47 final PerceptionFinalizer<C, I> finalizer)
48 {
49 Intermediate<I> intermediate = new Intermediate<>(identity.get());
50 Iterator<H> it = iterator();
51 while (it.hasNext() && !intermediate.isStop())
52 {
53 H next = it.next();
54 intermediate =
55 accumulator.accumulate(intermediate, (LaneBasedGTU) this.network.getGTU(next.getId()), next.getDistance());
56 intermediate.step();
57 }
58 return finalizer.collect(intermediate.getObject());
59 }
60
61
62 @Override
63 public Iterator<LaneBasedGTU> underlying()
64 {
65 return new Iterator<LaneBasedGTU>()
66 {
67
68 @Override
69 public boolean hasNext()
70 {
71 return false;
72 }
73
74
75 @Override
76 public LaneBasedGTU next()
77 {
78 throw new NoSuchElementException();
79 }
80
81 };
82 }
83
84 }