1. Stream 常用方法
接口 | 用途 |
---|
forEach | 循环遍历 |
map | map方法用于映射每个元素到对应的结果 |
filter | filter方法用于获取指定数量的流 |
limit | limit方法用于获取指定数量的流 |
sorted | sorted方法用于对流进行排序 |
Collectors | Collectors 类实现将流转换成集合和聚合元素 |
2. Stream流的五种创建方式
public class StreamGenerator {
@Test
public void generator1(){
String []arr = {"Lili", "Andy", "Jackson", "Smith"};
Stream <String> stream = Stream.of(arr);
stream.forEach(s-> System.out.println(s));
}
@Test
public void generator2(){
List<String> list = new ArrayList<String>();
list.add("Lili");
list.add("Andy");
list.add("Jackson");
list.add("Smith");
Stream stream = list.stream();
stream.forEach(s-> System.out.println(s));
}
@Test
public void generator3(){
Stream<Integer> s = Stream.generate(()-> new Random().nextInt(10000));
s.limit(10).forEach(i-> System.out.println(i));
}
@Test
public void generator4(){
Stream stream = Stream.iterate(1, n->n+1);
stream.limit(10).forEach(s-> System.out.println(s));
}
@Test
public void generator5(){
String str = "abcdefg我的";
IntStream stream = str.chars();
stream.forEach(c-> System.out.println((char)c));
}
}
3. Stream的常用方法实例
public class StreamMethod {
@Test
public void demo1(){
List<String> list = Arrays.asList("1", "2", "3", "4", "5");
int sum = list.stream()
.mapToInt(s-> Integer.parseInt(s))
.filter(n-> n%2 == 0)
.sum();
System.out.println(sum);
}
@Test
public void demo2(){
List<String> list = Arrays.asList("lili", "andy", "jackson", "smith");
list.stream()
.map(s-> s.substring(0, 1).toUpperCase() + s.substring(1))
.forEach(s-> System.out.println(s));
List<String> newlist = list.stream()
.map(s-> s.substring(0, 1).toUpperCase()+s.substring(1))
.collect(Collectors.toList());
System.out.println(newlist);
}
@Test
public void demo3(){
List<Integer> list = Arrays.asList(1, 60, 38, 21, 51, 60, 51, 73);
List<Integer> newlist = list.stream().distinct()
.filter(i-> i%2==1)
.sorted((a, b)->b-a)
.collect(Collectors.toList());
System.out.println(newlist);
}
}