使用传统的方式遍历集合对集合进行过滤
使用Stream流的方式遍历集合,对集合中的数据进行过滤
Stream关注的做什么,而不是怎么做
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("张妹妹");
list.stream().filter(name->name.startsWith("张"))
.filter(name->name.length()==3)
.forEach(name-> System.out.println(name));
}
1.流式原理
2.两种获取stream流的方式
方式1,集合转化为Stream流
方式2,将数组转换为stream流
3.stream流的常用方法
(1)foreach
(2)filter
即Stream流调用完终结方法后不能再被调用。
(3)映射 map
public static void main(String[] args) {
Stream<String> stream= Stream.of("1","2","3");
//stream.forEach(name-> System.out.println(name));
Stream<Integer> stream2 = stream.map(s -> {
return Integer.parseInt(s);
});
stream2.forEach(i-> System.out.println(i));
}
(4)count 统计个数
public static void main(String[] args) {
Stream<String> stream= Stream.of("1","2","3");
//stream.forEach(name-> System.out.println(name));
Stream<Integer> stream2 = stream.map(s -> {
return Integer.parseInt(s);
});
//stream2.forEach(i-> System.out.println(i));
long count = stream2.count();
System.out.println(count);
}
(5)limit
public static void main(String[] args) {
Stream<String> stream= Stream.of("1","2","3");
//stream.forEach(name-> System.out.println(name));
Stream<Integer> stream2 = stream.map(s -> {
return Integer.parseInt(s);
});
//stream2.forEach(i-> System.out.println(i));
//long count = stream2.count();
//System.out.println(count);
Stream<Integer> stream3 = stream2.limit(2);
stream3.forEach(i-> System.out.println(i));
}
(6)skip 跳过前几个
(7)concat 组合
练习
集合元素处理
public static void main(String[] args) {
Stream<String> stream1 = Stream.of("张三", "李四", "张妹妹", "张花花", "王五");
Stream<String> stream2 = Stream.of("张大", "李三", "张思思", "张尔尔", "王刘璐");
Stream<String> stream3 = stream1.filter(name -> name.length() == 3).limit(3);
Stream<String> stream4 = stream2.filter(name -> name.startsWith("张")).skip(2);
Stream<Person> personStream = Stream.concat(stream3, stream4).map((name -> {
return new Person(name);
}));
personStream.forEach(person-> System.out.println(person));
}