jdk8的特性stream().map()


轉:

https://blog.csdn.net/sanchan/article/details/70753645

java8的optional的使用:

http://www.jdon.com/idea/java/using-optional-effectively-in-java-8.html

http://www.runoob.com/java/java8-optional-class.html

Optional 類是一個可以為null的容器對象。如果值存在則isPresent()方法會返回true,調用get()方法會返回該對象。

Optional 是個容器:它可以保存類型T的值,或者僅僅保存null。Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測。

Optional 類的引入很好的解決空指針異常。

類聲明

以下是一個 java.util.Optional<T> 類的聲明:

public final class Optional<Textends Object
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
在Java 8中stream().map(),您可以將對象轉換為其他對象。查看以下示例:
 
1.大寫字符串列表
1.1簡單的Java示例將Strings列表轉換為大寫。
 
TestJava8.java
 
package com.mkyong.java8;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public  class  TestJava8 {
 
     public  static  void  main(String[] args) {
 
         List<String> alpha = Arrays.asList( "a" "b" "c" "d" );
 
         //Before Java8
         List<String> alphaUpper =  new  ArrayList<>();
         for  (String s : alpha) {
             alphaUpper.add(s.toUpperCase());
         }
 
         System. out .println(alpha);  //[a, b, c, d]
         System. out .println(alphaUpper);  //[A, B, C, D]
 
         // Java 8
         List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());
         System. out .println(collect);  //[A, B, C, D]
 
         // Extra, streams apply to any data type.
         List<Integer> num = Arrays.asList(1,2,3,4,5);
         List<Integer> collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());
         System. out .println(collect1);  //[2, 4, 6, 8, 10]
 
     }
 
}
 
2.對象列表 - >字符串列表
2.1 name從staff對象列表中獲取所有值。
 
Staff.java
 
package com.mkyong.java8;
 
import java.math.BigDecimal;
 
public  class  Staff {
 
     private  String name;
     private  int  age;
     private  BigDecimal salary;
     //...
}
 
TestJava8.java
 
package com.mkyong.java8;
 
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public  class  TestJava8 {
 
     public  static  void  main(String[] args) {
 
         List<Staff> staff = Arrays.asList(
                 new  Staff( "mkyong" , 30,  new  BigDecimal(10000)),
                 new  Staff( "jack" , 27,  new  BigDecimal(20000)),
                 new  Staff( "lawrence" , 33,  new  BigDecimal(30000))
         );
 
         //Before Java 8
         List<String> result =  new  ArrayList<>();
         for  (Staff x : staff) {
             result.add(x.getName());
         }
         System. out .println(result);  //[mkyong, jack, lawrence]
 
         //Java 8
         List<String> collect = staff.stream().map(x -> x.getName()).collect(Collectors.toList());
         System. out .println(collect);  //[mkyong, jack, lawrence]
 
     }
 
}
 
對象列表 - >其他對象列表
3.1此示例說明如何將staff對象列表轉換為對象列表StaffPublic。
 
Staff.java
 
package com.mkyong.java8;
 
import java.math.BigDecimal;
 
public  class  Staff {
 
     private  String name;
     private  int  age;
     private  BigDecimal salary;
     //...
}
 
StaffPublic.java
 
package com.mkyong.java8;
 
public  class  StaffPublic {
 
     private  String name;
     private  int  age;
     private  String extra;
     //...
}
 
 
 
3.3 Java 8的例子。
 
NowJava8.java
 
package com.mkyong.java8;
 
package com.hostingcompass.web.java8;
 
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public  class  NowJava8 {
 
     public  static  void  main(String[] args) {
 
         List<Staff> staff = Arrays.asList(
                 new  Staff( "mkyong" , 30,  new  BigDecimal(10000)),
                 new  Staff( "jack" , 27,  new  BigDecimal(20000)),
                 new  Staff( "lawrence" , 33,  new  BigDecimal(30000))
         );
 
         // convert inside the map() method directly.
         List<StaffPublic> result = staff.stream().map(temp -> {
             StaffPublic obj =  new  StaffPublic();
             obj.setName(temp.getName());
             obj.setAge(temp.getAge());
             if  ( "mkyong" . equals (temp.getName())) {
                 obj.setExtra( "this field is for mkyong only!" );
             }
             return  obj;
         }).collect(Collectors.toList());
 
         System. out .println(result);
 
     }
 
}
 
 
[
     StaffPublic{name= 'mkyong' , age=30, extra= 'this field is for mkyong only!' },
     StaffPublic{name= 'jack' , age=27, extra= 'null' },
     StaffPublic{name= 'lawrence' , age=33, extra= 'null' }
]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM