|
32 | 32 | package net.sdo; |
33 | 33 |
|
34 | 34 | import java.util.ArrayList; |
| 35 | +import java.util.List; |
35 | 36 | import java.util.Optional; |
| 37 | +import java.util.function.Predicate; |
36 | 38 | import java.util.stream.Stream; |
37 | 39 |
|
38 | 40 | import org.openjdk.jmh.annotations.Benchmark; |
@@ -107,22 +109,21 @@ public void countIterator(Blackhole bh) { |
107 | 109 | bh.consume(count); |
108 | 110 | } |
109 | 111 |
|
110 | | - private ArrayList<String> calcArray(ArrayList<String> src, |
111 | | - int c, char target) { |
| 112 | + private ArrayList<String> calcArray(List<String> src, Predicate<String> p) { |
112 | 113 | ArrayList<String> dst = new ArrayList<>(); |
113 | 114 | for (String s : src) { |
114 | | - if (s.charAt(c) != target) |
| 115 | + if (p.test(s)) |
115 | 116 | dst.add(s); |
116 | 117 | } |
117 | 118 | return dst; |
118 | 119 | } |
119 | 120 |
|
120 | 121 | @Benchmark |
121 | 122 | public void calcEager(Blackhole bh) { |
122 | | - ArrayList<String> al1 = calcArray(al, 0, 'A'); |
123 | | - ArrayList<String> al2 = calcArray(al1, 1, 'A'); |
124 | | - ArrayList<String> al3 = calcArray(al2, 2, 'A'); |
125 | | - ArrayList<String> al4 = calcArray(al3, 3, 'A'); |
| 123 | + ArrayList<String> al1 = calcArray(al, (s) -> s.charAt(0) != 'A'); |
| 124 | + ArrayList<String> al2 = calcArray(al1, (s) -> s.charAt(1) != 'A'); |
| 125 | + ArrayList<String> al3 = calcArray(al2, (s) -> s.charAt(2) != 'A'); |
| 126 | + ArrayList<String> al4 = calcArray(al3, (s) -> s.charAt(3) != 'A'); |
126 | 127 | String answer = al4.get(0); |
127 | 128 | bh.consume(answer); |
128 | 129 | } |
|
0 commit comments