接着上一篇接着写
如下数据:
List<String> list = new ArrayList<>();
list.add("10");
list.add("20");
list.add("30");
list.add("40");
list.add("50");
- 集合字符转int
list
.stream()
.map(s->Integer.parseInt(s))
.forEach(System.out::println);
//或者引用的形式
list
.stream()
.map(Integer::parseInt)
.forEach(System.out::println);
//or
list
.stream()
.mapToInt(Integer::parseInt)
.forEach(System.out::println);
- 来个求和
int result =
list
.stream()
.mapToInt(Integer::parseInt)
.sum();
System.out.println(result);
stream流的最后需要一个终结方法,最常用的是forEach,和count,count是统计元素的
还有一个收集功能没提
整理一下数据
list.clear();
list.add("武汉大学");
list.add("武汉科技大学");
list.add("武汉工程大学");
list.add("中国地质大学");
list.add("华中科技大学");
list.add("华侨大学");
list.add("华中师范大学");
list.add("华中农业大学");
- 收集前两个数据形成一个新的List
List<String> wuhan =
list
.stream()
.limit(2)
.collect(Collectors.toList());
wuhan.stream().forEach(System.out::println);
- 收集前两个数据形成一个新的Set
Set<String> wu =
list
.stream()
.limit(2)
.collect(Collectors.toSet());
wu.stream().forEach(System.out::println);
- 来个map,将字符串中建校时间在1900年后的学校形成一个新的map
String[] arr = {"武汉大学,1893","武汉科技大学,1898","华中师范大学,1903","华中科技 大学,1952"};
Map<String, Integer> map =
Stream.of(arr)
.filter(s-> Integer.parseInt(s.split(",")[1])>1900)
.collect(Collectors.toMap(s->s.split(",")[0],s->Integer.parseInt(s.split(",")[1])));
map.forEach((k,v)->System.out.println(k+v));