Demo示例
package com.lucky.stream;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.stream()
.filter(name -> name.startsWith("张"))
.filter(name -> name.length()==3)
.forEach(name-> System.out.println(name));
}
}
forEach
package com.lucky.stream;
import java.util.stream.Stream;
public class forEach {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三","李四","王五","赵六","田七");
stream.forEach(name -> System.out.println(name));
}
}
filter
- filter参数是predict函数式接口(test方法)
package com.lucky.stream;
import java.util.stream.Stream;
public class filter {
public static void main(String[] args) {
Stream<String> stream = Stream.of("张三丰","张翠山","赵敏","周芷若","张无忌");
Stream<String> stream2 = stream.filter((String name)->{return name.startsWith("张");});
stream2.forEach(name-> System.out.println(name));
}
}
map
- map的参数是一个Function函数式接口(使用R apply(T t)方法)
package com.lucky.stream;
import java.util.stream.Stream;
public class map
{
public static void main(String[] args) {
Stream<String> stream = Stream.of("1","2","3");
Stream<Integer> stream2 = stream.map((String s)->{return Integer.parseInt(s);});
stream2.forEach(i-> System.out.println(i));
}
}
count
package com.lucky.stream;
import java.util.ArrayList;
import java.util.stream.Stream;
public class count {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
Stream<Integer> stream = list.stream();
long count = stream.count();
System.out.println(count);
}
}
limit
package com.lucky.stream;
import java.util.stream.Stream;
public class limit {
public static void main(String[] args) {
String[] arr = {"美羊羊","喜羊羊","懒洋洋","灰太狼","红太狼"};
Stream<String> stream = Stream.of(arr);
Stream<String> stream2 = stream.limit(3);
stream2.forEach(name->{
System.out.println(name);
});
}
}
skip
- skip跳过前n个元素,取后边成新流
- Stream skip(long n);
package com.lucky.stream;
import java.util.stream.Stream;
public class slip {
public static void main(String[] args) {
String[] arr = {"美羊羊","喜羊羊","懒洋洋","灰太狼","红太狼"};
Stream<String> stream = Stream.of(arr);
Stream<String> stream2 = stream.skip(3);
stream2.forEach(name -> System.out.println(name));
}
}
concat
- concat用于把流组合到一起
- static Stream concat(Stream<? extends T> a,Stream<? extends T> b)
package com.lucky.stream;
import java.util.stream.Stream;
public class concat {
public static void main(String[] args) {
String[] arr = {"美羊羊","喜羊羊","懒洋洋","灰太狼","红太狼"};
Stream<String> stream1 = Stream.of(arr);
Stream<String> stream2 = Stream.of("张三丰","张翠山","赵敏","周芷若","张无忌");
Stream<String> concat = Stream.concat(stream1, stream2);
concat.forEach(name-> System.out.println(name));
}
}
Practice练习
package com.lucky.stream;
import java.util.stream.Stream;
public class Practice {
public static void main(String[] args) {
Stream<String> one = Stream.of("张三丰","张翠山","赵敏","周芷若","张无忌");
Stream<String> oneStream = one.filter(name -> name.length() == 3).limit(3);
String[] arr = {"美羊羊","喜羊羊","懒洋洋","灰太狼","红太狼"};
Stream<String> two = Stream.of(arr);
Stream<String> twoStream = two.filter(name -> name.endsWith("狼")).skip(1);
Stream.concat(oneStream,twoStream).map(name -> new wolf(name)).forEach(w-> System.out.println(w));
}
}