Skip to content

Commit b40a538

Browse files
committed
jdk8 stream example
1 parent 4ef2075 commit b40a538

File tree

9 files changed

+435
-0
lines changed

9 files changed

+435
-0
lines changed

pom.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,30 @@
3434
<groupId>org.springframework.boot</groupId>
3535
<artifactId>spring-boot-starter-test</artifactId>
3636
</dependency>
37+
38+
39+
40+
<dependency>
41+
<groupId>org.projectlombok</groupId>
42+
<artifactId>lombok</artifactId>
43+
<version>1.16.16</version><!--$NO-MVN-MAN-VER$-->
44+
</dependency>
45+
46+
47+
3748
<dependency>
3849
<groupId>com.google.guava</groupId>
3950
<artifactId>guava</artifactId>
4051
<version>22.0</version>
4152
</dependency>
4253

54+
<dependency>
55+
<groupId>com.alibaba</groupId>
56+
<artifactId>fastjson</artifactId>
57+
<version>1.2.30</version>
58+
</dependency>
59+
60+
4361
</dependencies>
4462

4563
<build>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.sung.java8.lambda;
2+
3+
import lombok.Data;
4+
5+
/**
6+
* Created by sungang on 2017/8/15.
7+
*/
8+
@Data
9+
public class Apple {
10+
/** 编号 */
11+
private long id;
12+
13+
/** 颜色 */
14+
private Color color;
15+
16+
/** 重量 */
17+
private float weight;
18+
19+
/** 产地 */
20+
private String origin;
21+
22+
public Apple() {
23+
}
24+
25+
public Apple(long id, Color color, float weight, String origin) {
26+
this.id = id;
27+
this.color = color;
28+
this.weight = weight;
29+
this.origin = origin;
30+
}
31+
32+
33+
34+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.sung.java8.lambda;
2+
3+
/**
4+
* Created by sungang on 2017/8/15.
5+
*/
6+
public interface AppleFilter {
7+
8+
/**
9+
* 筛选条件抽象
10+
*
11+
* @param apple
12+
* @return
13+
*/
14+
boolean accept(Apple apple);
15+
16+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.sung.java8.lambda;
2+
3+
4+
/**
5+
* Created by sungang on 2017/8/15.
6+
*/
7+
public enum Color {
8+
GREEN,
9+
RED
10+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.sung.java8.lambda;
2+
3+
import com.alibaba.fastjson.JSON;
4+
import org.junit.Test;
5+
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
/**
10+
* Created by sungang on 2017/8/15.
11+
*/
12+
public class TestMain {
13+
14+
15+
16+
17+
18+
public static void main(String[] args) {
19+
List<Apple> apples = new ArrayList<Apple>() {
20+
{
21+
add(new Apple(1, Color.GREEN, 100, "四川"));
22+
add(new Apple(2, Color.RED, 101, "广西"));
23+
add(new Apple(3, Color.GREEN, 120, "陕西"));
24+
}
25+
};
26+
// 筛选苹果
27+
List<Apple> filterApples = filterApplesByAppleFilter(apples, new AppleFilter() {
28+
@Override
29+
public boolean accept(Apple apple) {
30+
// 筛选重量大于100g的红苹果
31+
return Color.RED.equals(apple.getColor()) && apple.getWeight() > 100;
32+
}
33+
});
34+
35+
System.out.println(JSON.toJSONString(filterApples));
36+
}
37+
38+
/**
39+
* 用户最开始的需求可能只是简单的希望能够通过程序筛选出绿色的苹果,于是我们可以很快的通过程序实现:
40+
*
41+
* @param apples
42+
* @return
43+
*/
44+
public static List<Apple> filterGreenApples(List<Apple> apples) {
45+
List<Apple> filterApples = new ArrayList<>();
46+
for (final Apple apple : apples) {
47+
if (Color.GREEN.equals(apple.getColor())) {
48+
filterApples.add(apple);
49+
}
50+
}
51+
return filterApples;
52+
}
53+
54+
55+
/**
56+
* 将筛选条件封装成接口
57+
*
58+
* @param apples
59+
* @param filter
60+
* @return
61+
*/
62+
public static List<Apple> filterApplesByAppleFilter(List<Apple> apples, AppleFilter filter) {
63+
List<Apple> filterApples = new ArrayList<>();
64+
for (final Apple apple : apples) {
65+
if (filter.accept(apple)) {
66+
filterApples.add(apple);
67+
}
68+
}
69+
return filterApples;
70+
}
71+
72+
73+
74+
@Test
75+
public void test1(){
76+
List<Apple> apples = new ArrayList<Apple>() {
77+
{
78+
add(new Apple(1, Color.GREEN, 100, "四川"));
79+
add(new Apple(2, Color.RED, 101, "广西"));
80+
add(new Apple(3, Color.GREEN, 120, "陕西"));
81+
}
82+
};
83+
// 筛选苹果
84+
List<Apple> filterApples = filterApplesByAppleFilter(apples,(Apple apple) -> Color.RED.equals(apple.getColor()) && apple.getWeight() >= 100);
85+
//()->xxx ()里面就是方法参数,xxx是方法实现
86+
System.out.println(JSON.toJSONString(filterApples));
87+
}
88+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.sung.java8.stream;
2+
3+
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
/**
9+
* Created by sungang on 2017/8/15.
10+
*/
11+
@Data
12+
@AllArgsConstructor
13+
@NoArgsConstructor
14+
public class Student {
15+
16+
/**
17+
* 学号
18+
*/
19+
private long id;
20+
private String name;
21+
private int age;
22+
/**
23+
* 年级
24+
*/
25+
private int grade;
26+
/**
27+
* 专业
28+
*/
29+
private String major;
30+
/**
31+
* 学校
32+
*/
33+
private String school;
34+
35+
36+
}

0 commit comments

Comments
 (0)