瀏覽代碼

Replaced stream() functionality by loops (closes #40)

Piet van Dongen 11 年之前
父節點
當前提交
477a12d1f6
共有 2 個檔案被更改,包括 117 行新增107 行删除
  1. 18
    8
      strain/example.java
  2. 99
    99
      strain/src/test/java/StrainTest.java

+ 18
- 8
strain/example.java 查看文件

@@ -1,16 +1,26 @@
1
-import java.util.Collection;
1
+import java.util.ArrayList;
2
+import java.util.List;
2 3
 import java.util.function.Predicate;
3
-import java.util.stream.Collectors;
4 4
 
5 5
 public class Strain {
6 6
 
7
-	public static <T> Collection<T> keep(Collection<T> coll, Predicate<T> func)
8
-	{
9
-		return coll.stream().filter(func).collect(Collectors.toList());
7
+	public static <T> List<T> keep(List<T> collection, Predicate<T> predicate) {
8
+		return filter(collection, predicate);
10 9
 	}
11 10
 
12
-	public static <T> Collection<T> discard(Collection<T> coll, Predicate<T> func)
13
-	{
14
-		return coll.stream().filter(func.negate()).collect(Collectors.toList());
11
+	public static <T> List<T> discard(List<T> collection, Predicate<T> predicate) {
12
+		return filter(collection, predicate.negate());
13
+	}
14
+
15
+	public static <T> List<T> filter(List<T> collection, Predicate<T> predicate) {
16
+		List<T> filteredCollection = new ArrayList<>();
17
+
18
+		for (T item : collection) {
19
+			if (predicate.test(item)) {
20
+				filteredCollection.add(item);
21
+			}
22
+		}
23
+
24
+		return filteredCollection;
15 25
 	}
16 26
 }

+ 99
- 99
strain/src/test/java/StrainTest.java 查看文件

@@ -7,115 +7,115 @@ import java.util.List;
7 7
 
8 8
 public class StrainTest {
9 9
 
10
-	@Test
11
-	public void emptyKeep() {
12
-		List<Integer> expected = new LinkedList<>();
13
-		List<Integer> test = new LinkedList<>();
14
-		Assert.assertEquals(expected, Strain.keep(test, x -> x < 10));
15
-	}
10
+    @Test
11
+    public void emptyKeep() {
12
+        List<Integer> input = new LinkedList<>();
13
+        List<Integer> expectedOutput = new LinkedList<>();
14
+        Assert.assertEquals(expectedOutput, Strain.keep(input, x -> x < 10));
15
+    }
16 16
 
17
-	@Test
18
-	public void keepEverything() {
19
-		List<Integer> expected = Arrays.asList(1, 2, 3);
20
-		List<Integer> test = Arrays.asList(1, 2, 3);
21
-		Assert.assertEquals(expected, Strain.keep(test, x -> x < 10));
22
-	}
17
+    @Test
18
+    public void keepEverything() {
19
+        List<Integer> input = Arrays.asList(1, 2, 3);
20
+        List<Integer> expectedOutput = Arrays.asList(1, 2, 3);
21
+        Assert.assertEquals(expectedOutput, Strain.keep(input, x -> x < 10));
22
+    }
23 23
 
24
-	@Test
25
-	public void keepFirstAndLast() {
26
-		List<Integer> expected = Arrays.asList(1, 3);
27
-		List<Integer> test = Arrays.asList(1, 2, 3);
28
-		Assert.assertEquals(expected, Strain.keep(test, x -> x % 2 != 0));
29
-	}
24
+    @Test
25
+    public void keepFirstAndLast() {
26
+        List<Integer> input = Arrays.asList(1, 2, 3);
27
+        List<Integer> expectedOutput = Arrays.asList(1, 3);
28
+        Assert.assertEquals(expectedOutput, Strain.keep(input, x -> x % 2 != 0));
29
+    }
30 30
 
31
-	@Test
32
-	public void keepNeitherFirstNorLast() {
33
-		List<Integer> expected = Arrays.asList(2, 4);
34
-		List<Integer> test = Arrays.asList(1, 2, 3, 4, 5);
35
-		Assert.assertEquals(expected, Strain.keep(test, x -> x % 2 == 0));
36
-	}
31
+    @Test
32
+    public void keepNeitherFirstNorLast() {
33
+        List<Integer> input = Arrays.asList(1, 2, 3, 4, 5);
34
+        List<Integer> expectedOutput = Arrays.asList(2, 4);
35
+        Assert.assertEquals(expectedOutput, Strain.keep(input, x -> x % 2 == 0));
36
+    }
37 37
 
38
-	@Test
39
-	public void KeepStrings() {
40
-		List<String> words = Arrays
41
-				.asList("apple zebra banana zombies cherimoya zelot".split(" "));
42
-		List<String> expected = Arrays.asList("zebra", "zombies", "zelot");
43
-		Assert.assertEquals(expected,
44
-				Strain.keep(words, x -> x.startsWith("z")));
45
-	}
38
+    @Test
39
+    public void KeepStrings() {
40
+        List<String> words = Arrays
41
+                .asList("apple zebra banana zombies cherimoya zelot".split(" "));
42
+        List<String> expectedOutput = Arrays.asList("zebra", "zombies", "zelot");
43
+        Assert.assertEquals(expectedOutput,
44
+                Strain.keep(words, x -> x.startsWith("z")));
45
+    }
46 46
 
47
-	@Test
48
-	public void KeepArrays() {
49
-		List<List<Integer>> actual = Arrays.asList(
50
-				Arrays.asList(1, 2, 3),
51
-				Arrays.asList(5, 5, 5), 
52
-				Arrays.asList(5, 1, 2),
53
-				Arrays.asList(2, 1, 2), 
54
-				Arrays.asList(1, 5, 2),
55
-				Arrays.asList(2, 2, 1), 
56
-				Arrays.asList(1, 2, 5));
57
-		List<List<Integer>> expected = Arrays.asList(
58
-				Arrays.asList(5, 5, 5),
59
-				Arrays.asList(5, 1, 2), 
60
-				Arrays.asList(1, 5, 2),
61
-				Arrays.asList(1, 2, 5));
62
-		Assert.assertEquals(expected,
63
-				Strain.keep(actual, col -> col.contains(5)));
64
-	}
47
+    @Test
48
+    public void KeepArrays() {
49
+        List<List<Integer>> actual = Arrays.asList(
50
+                Arrays.asList(1, 2, 3),
51
+                Arrays.asList(5, 5, 5),
52
+                Arrays.asList(5, 1, 2),
53
+                Arrays.asList(2, 1, 2),
54
+                Arrays.asList(1, 5, 2),
55
+                Arrays.asList(2, 2, 1),
56
+                Arrays.asList(1, 2, 5));
57
+        List<List<Integer>> expectedOutput = Arrays.asList(
58
+                Arrays.asList(5, 5, 5),
59
+                Arrays.asList(5, 1, 2),
60
+                Arrays.asList(1, 5, 2),
61
+                Arrays.asList(1, 2, 5));
62
+        Assert.assertEquals(expectedOutput,
63
+                Strain.keep(actual, col -> col.contains(5)));
64
+    }
65 65
 
66
-	@Test
67
-	public void emptyDiscard() {
68
-		List<Integer> expected = new LinkedList<>();
69
-		List<Integer> test = new LinkedList<>();
70
-		Assert.assertEquals(expected, Strain.discard(test, x -> x < 10));
71
-	}
66
+    @Test
67
+    public void emptyDiscard() {
68
+        List<Integer> input = new LinkedList<>();
69
+        List<Integer> expectedOutput = new LinkedList<>();
70
+        Assert.assertEquals(expectedOutput, Strain.discard(input, x -> x < 10));
71
+    }
72 72
 
73
-	@Test
74
-	public void discardNothing() {
75
-		List<Integer> expected = Arrays.asList(1, 2, 3);
76
-		List<Integer> test = Arrays.asList(1, 2, 3);
77
-		Assert.assertEquals(expected, Strain.discard(test, x -> x > 10));
78
-	}
73
+    @Test
74
+    public void discardNothing() {
75
+        List<Integer> input = Arrays.asList(1, 2, 3);
76
+        List<Integer> expectedOutput = Arrays.asList(1, 2, 3);
77
+        Assert.assertEquals(expectedOutput, Strain.discard(input, x -> x > 10));
78
+    }
79 79
 
80
-	@Test
81
-	public void discardFirstAndLast() {
82
-		List<Integer> expected = Arrays.asList(2);
83
-		List<Integer> test = Arrays.asList(1, 2, 3);
84
-		Assert.assertEquals(expected, Strain.discard(test, x -> x % 2 != 0));
80
+    @Test
81
+    public void discardFirstAndLast() {
82
+        List<Integer> input = Arrays.asList(1, 2, 3);
83
+        List<Integer> expectedOutput = Arrays.asList(2);
84
+        Assert.assertEquals(expectedOutput, Strain.discard(input, x -> x % 2 != 0));
85 85
 
86
-	}
86
+    }
87 87
 
88
-	@Test
89
-	public void discardNeitherFirstNorLast() {
90
-		List<Integer> expected = Arrays.asList(1, 3, 5);
91
-		List<Integer> test = Arrays.asList(1, 2, 3, 4, 5);
92
-		Assert.assertEquals(expected, Strain.discard(test, x -> x % 2 == 0));
93
-	}
88
+    @Test
89
+    public void discardNeitherFirstNorLast() {
90
+        List<Integer> input = Arrays.asList(1, 2, 3, 4, 5);
91
+        List<Integer> expectedOutput = Arrays.asList(1, 3, 5);
92
+        Assert.assertEquals(expectedOutput, Strain.discard(input, x -> x % 2 == 0));
93
+    }
94 94
 
95
-	@Test
96
-	public void discardStrings() {
97
-		List<String> words = Arrays
98
-				.asList("apple zebra banana zombies cherimoya zelot".split(" "));
99
-		List<String> expected = Arrays.asList("apple", "banana", "cherimoya");
100
-		Assert.assertEquals(expected,
101
-				Strain.discard(words, x -> x.startsWith("z")));
102
-	}
95
+    @Test
96
+    public void discardStrings() {
97
+        List<String> words = Arrays
98
+                .asList("apple zebra banana zombies cherimoya zelot".split(" "));
99
+        List<String> expectedOutput = Arrays.asList("apple", "banana", "cherimoya");
100
+        Assert.assertEquals(expectedOutput,
101
+                Strain.discard(words, x -> x.startsWith("z")));
102
+    }
103 103
 
104
-	@Test
105
-	public void discardArrays() {
106
-		List<List<Integer>> actual = Arrays.asList(
107
-				Arrays.asList(1, 2, 3),
108
-				Arrays.asList(5, 5, 5),
109
-				Arrays.asList(5, 1, 2),
110
-				Arrays.asList(2, 1, 2),
111
-				Arrays.asList(1, 5, 2),
112
-				Arrays.asList(2, 2, 1),
113
-				Arrays.asList(1, 2, 5));
114
-		List<List<Integer>> expected = Arrays.asList(
115
-				Arrays.asList(1, 2, 3),
116
-				Arrays.asList(2, 1, 2),
117
-				Arrays.asList(2, 2, 1));
118
-		Assert.assertEquals(expected,
119
-				Strain.discard(actual, col -> col.contains(5)));
120
-	}
104
+    @Test
105
+    public void discardArrays() {
106
+        List<List<Integer>> actual = Arrays.asList(
107
+                Arrays.asList(1, 2, 3),
108
+                Arrays.asList(5, 5, 5),
109
+                Arrays.asList(5, 1, 2),
110
+                Arrays.asList(2, 1, 2),
111
+                Arrays.asList(1, 5, 2),
112
+                Arrays.asList(2, 2, 1),
113
+                Arrays.asList(1, 2, 5));
114
+        List<List<Integer>> expectedOutput = Arrays.asList(
115
+                Arrays.asList(1, 2, 3),
116
+                Arrays.asList(2, 1, 2),
117
+                Arrays.asList(2, 2, 1));
118
+        Assert.assertEquals(expectedOutput,
119
+                Strain.discard(actual, col -> col.contains(5)));
120
+    }
121 121
 }