Stream流
获取Steam流:
- 所有Collection集合都可以通过stream默认方法获取流
- Stream接口的静态方法of可以获取数组相对应的流。
//List集合转换为流
List<String> list=new ArrayList<>();
Stream<String> stream1= list.stream();
//Set集合转换为流
Set<String> set=new HashSet<>();
Stream<String> stream2 = set.stream();
//Map集合转换为流
Map<String,String> map=new HashMap<>();
//获取键值集合,转换为流
Set<String> set1 = map.keySet();
Stream<String> stream3 = set1.stream();
//获取值的集合转换为流
Collection<String> values = map.values();
Stream<String> stream4 = values.stream();
//获取键值对的集合,转换为流
Set<Map.Entry<String, String>> entries = map.entrySet();
Stream<Map.Entry<String, String>> stream5 = entries.stream();
//静态方法
Stream<Integer> integerStream = Stream.of(1, 2, 3, 4 );
Integer [] arr={1,2,3,4,6};
Stream<Integer> stream6= Stream.of(arr);
forEach方法
forEach方法用来遍历数组
import java.util.stream.Stream;
public class Demo02Stream {
public static void main(String[] args) {
Stream<Integer> stream1 = Stream.of(1, 2, 3, 4, 5, 6);
stream1.forEach(i-> System.out.println(i));
Stream<String> stream2 = Stream.of("张三", "张无忌", "张三丰", "张翠山");
stream2.forEach(i-> System.out.println(i));
}
}
fitler方法
对数据过滤
import java.util.stream.Stream;
public class Demo02Stream {
public static void main(String[] args) {
Stream<String> stream2 = Stream.of("张三", "张无忌", "张三丰", "张翠山","胡歌");
//只要姓张的人
Stream<String> stream3 = stream2.filter(name -> name.startsWith("张"));
stream3.forEach(i-> System.out.println(i));
}
}
map方法
把一种流转换为另一种流
import java.util.stream.Stream;
public class Demo02Stream {
public static void main(String[] args) {
Stream<String> stream = Stream.of("1", "2", "3", "4", "5");
//把数据类型为String的流转换为Integer类型的流
Stream<Integer> integerStream = stream.map((String s) -> {
return Integer.parseInt(s);
}
);
}
}
Limit和skip方法
import java.util.List;
import java.util.stream.Stream;
public class DemoStream {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("张七是");
Stream<String> stream = list.stream();
//跳过第一个元素
Stream<String> skip = stream.skip(1);
//只要前三个元素
Stream<String> limit = skip.limit(3);
limit.forEach(name-> System.out.println(name));
}
}
count方法
count方法和forEach方法都是Strea流中的终结方法,一但使用,流就会关闭,所以对于同一个流来说,这两个方法不能同时用。
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class DemoStream {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("张七是");
Stream<String> stream = list.stream();
long count = stream.count();
System.out.println(count);
stream.forEach(name-> System.out.println(name));
}}
静态方法concat
将两个流,合并成一个流
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class DemoStream {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("张七是");
Stream<String> stream = list.stream();
List<String> list1=new ArrayList<>();
list1.add("胡歌");
Stream<String> stream1 = list1.stream();
Stream<String> concat = Stream.concat(stream, stream1);
concat.forEach(name-> System.out.println(name));}}