</div><!--end: blogTitle 博客的标题和副标题 -->
<div id="navigator">
<div class="blogStats">
<div id="blog_stats">
随笔-1
文章-0
评论-0
</div><!--end: blogStats -->
</div><!--end: navigator 博客导航栏 -->
<div id="post_detail">
JDK1.8 Stream
1.Streams filter() and collect() 进行过滤数据和收集数据
按照正常的方式过滤数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
ist<String> lines = Arrays.asList(
"spring"
,
"node"
,
"mkyong"
);
List<String> result = getFilterOutput(lines,
"mkyong"
);
for
(String temp : result) {
System.out.println(temp);
//output : spring node
}
//...
private
static
List<String> getFilterOutput(List<String> lines, String filter) {
List<String> result =
new
ArrayList<>();
for
(String line : lines) {
if
(!
"mkyong"
.equals(line)) {
result.add(line);
}
}
return
result;
}
|
JDK1.8之后过滤数据的方式
1
2
3
4
5
6
7
8
9
10
|
import
java.util.stream.Collectors;
//...
List<String> lines = Arrays.asList(
"spring"
,
"node"
,
"mkyong"
);
List<String> result = lines.stream()
//convert list to stream
.filter(line -> !
"mkyong"
. equals (line))
//filters the line, equals to "mkyong"
.collect(Collectors.toList());
//collect the output and convert streams to a List
result.forEach(System.out::println);
//output : spring node
|
2. Streams filter(), findAny() and orElse()
按照正常方式,通过名字获取对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
ist<Person> persons = Arrays.asList(
new
Person(
"mkyong"
),
new
Person(
"michael"
),
new
Person(
"lawrence"
));
Person result = getStudentByName(persons,
"michael"
);
//...
private
Person getStudentByName(List<Person> persons, String name) {
Person result =
null
;
for
(Person temp : persons) {
if
(name.equals(temp.getName())) {
result = temp;
}
}
return
result;
}
|
使用stream.filter ()
过滤一列表,并.findAny().orElse (null)
返回一个对象的条件。
1
2
3
4
5
6
7
|
List<Person> persons = Arrays.asList(
new
Person(
"mkyong"
),
new
Person(
"michael"
),
new
Person(
"lawrence"
));
Person result = persons.stream()
// Convert to steam
.filter(x ->
"michael"
.equals(x.getName()))
// we want "michael" only
.findAny()
// If 'findAny' then return found
.orElse(
null
);
// If not found, return null
|
更多赛选条件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
List<Person> persons = Arrays.asList(
new
Person(
"mkyong"
,
20
),
new
Person(
"michael"
,
21
),
new
Person(
"lawrence"
,
23
));
Person result = persons.stream()
.filter((x) ->
"michael"
.equals(x.getName()) &&
21
==x.getAge())
.findAny()
.orElse(
null
);
//or like this
Person result = persons.stream()
.filter(x -> {
if
(
"michael"
.equals(x.getName()) &&
21
==x.getAge()){
return
true
;
}
return
false
;
}).findAny()
.orElse(
null
);
|
使用filter和map例子
1
2
3
4
5
6
7
8
9
10
|
List<Person> persons = Arrays.asList(
new
Person(
"mkyong"
,
20
),
new
Person(
"michael"
,
21
),
new
Person(
"lawrence"
,
23
));
String name = persons.stream()
.filter(x ->
"michael"
.equals(x.getName()))
.map(Person::getName)
//convert stream to String
.findAny()
.orElse(
""
);
//name = michael
|
</div>
<div class="postDesc">posted @ <span id="post-date">2016-09-08 10:27</span> <a href="https://www.cnblogs.com/julian-keen/">重新的开始</a> 阅读(<span id="post_view_count">4212</span>) 评论(<span id="post_comment_count">0</span>) <a href="https://i.cnblogs.com/EditPosts.aspx?postid=5852004" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(5852004);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=304331,cb_entryId=5852004,cb_blogApp=currentBlogApp,cb_blogUserGuid='85f984bf-0975-e611-9fc1-ac853d9f53cc',cb_entryCreatedDate='2016/9/8 10:27:00';loadViewCount(cb_entryId);var cb_postType=1;var isMarkdown=false;</script>
</div><!--end: forFlow -->
</div><!--end: mainContent 主体内容容器-->
<div id="sideBar">
<div id="sideBarMain">
公告
<div id="calendar"><div id="blog-calendar" style=""><table id="blogCalendar" class="Cal" cellspacing="0" cellpadding="0" title="Calendar">
<tbody><tr><td colspan="7"><table class="CalTitle" cellspacing="0">
<tbody><tr><td class="CalNextPrev"><a href="javascript:void(0);" onclick="loadBlogCalendar('2019/01/01');return false;"><</a></td><td align="center">2019年2月</td><td class="CalNextPrev" align="right"><a href="javascript:void(0);" onclick="loadBlogCalendar('2019/03/01');return false;">></a></td></tr>
</tbody></table></td></tr><tr><th class="CalDayHeader" align="center" abbr="日" scope="col">日</th><th class="CalDayHeader" align="center" abbr="一" scope="col">一</th><th class="CalDayHeader" align="center" abbr="二" scope="col">二</th><th class="CalDayHeader" align="center" abbr="三" scope="col">三</th><th class="CalDayHeader" align="center" abbr="四" scope="col">四</th><th class="CalDayHeader" align="center" abbr="五" scope="col">五</th><th class="CalDayHeader" align="center" abbr="六" scope="col">六</th></tr><tr><td class="CalOtherMonthDay" align="center">27</td><td class="CalOtherMonthDay" align="center">28</td><td class="CalOtherMonthDay" align="center">29</td><td class="CalOtherMonthDay" align="center">30</td><td class="CalOtherMonthDay" align="center">31</td><td align="center">1</td><td class="CalWeekendDay" align="center">2</td></tr><tr><td class="CalWeekendDay" align="center">3</td><td align="center">4</td><td align="center">5</td><td align="center">6</td><td align="center">7</td><td align="center">8</td><td class="CalWeekendDay" align="center">9</td></tr><tr><td class="CalWeekendDay" align="center">10</td><td align="center">11</td><td align="center">12</td><td align="center">13</td><td align="center">14</td><td align="center">15</td><td class="CalWeekendDay" align="center">16</td></tr><tr><td class="CalTodayDay" align="center">17</td><td align="center">18</td><td align="center">19</td><td align="center">20</td><td align="center">21</td><td align="center">22</td><td class="CalWeekendDay" align="center">23</td></tr><tr><td class="CalWeekendDay" align="center">24</td><td align="center">25</td><td align="center">26</td><td align="center">27</td><td align="center">28</td><td class="CalOtherMonthDay" align="center">1</td><td class="CalOtherMonthDay" align="center">2</td></tr><tr><td class="CalOtherMonthDay" align="center">3</td><td class="CalOtherMonthDay" align="center">4</td><td class="CalOtherMonthDay" align="center">5</td><td class="CalOtherMonthDay" align="center">6</td><td class="CalOtherMonthDay" align="center">7</td><td class="CalOtherMonthDay" align="center">8</td><td class="CalOtherMonthDay" align="center">9</td></tr>
<div id="leftcontentcontainer">
<div id="blog-sidecolumn"><div id="sidebar_search" class="sidebar-block">
文章分类
</div><!--end: sideBarMain -->
</div><!--end: sideBar 侧边栏容器 -->
<div class="clear"></div>
</div><!--end: main -->
<div class="clear"></div>
<div id="footer">
Copyright ©2019 重新的开始