java1.8新特性

</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

 

0
0
	</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">

公告

昵称: 重新的开始
园龄: 2年5个月
粉丝: 0
关注: 0
		<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;">&lt;</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;">&gt;</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">
  • 2016年9月 (1)
  • 文章分类

  • Java
  • 	</div><!--end: sideBarMain -->
    </div><!--end: sideBar 侧边栏容器 -->
    <div class="clear"></div>
    </div><!--end: main -->
    <div class="clear"></div>
    <div id="footer">
    

    Copyright ©2019 重新的开始

    猜你喜欢

    转载自blog.csdn.net/qq_40597878/article/details/87537785