1. 获取Stream流
1. 所有的Collection<T>集合都有对应的Stream();
2. 可以通过Stream类中的static Stream of()获取
static Stream<T> of(T... t);
static Stream<T> of(T t);
package com.qfedu.first.streamget;
import java.util.*;
import java.util.stream.Stream;
public class Demo1 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
Stream<String> stream = list.stream();
HashSet<String> set = new HashSet<>();
Stream<String> stream1 = set.stream();
HashMap<String, String> map = new HashMap<>();
Set<String> keySet = map.keySet();
Stream<String> stream2 = keySet.stream();
Collection<String> values = map.values();
Stream<String> stream3 = values.stream();
Set<Map.Entry<String, String>> entrySet = map.entrySet();
Stream<Map.Entry<String, String>> stream4 = entrySet.stream();
Stream<String> stringStream = Stream.of("灵台方寸山", "斜月三星洞");
String[] arr = {"为天地立心", "为生民立命", "为往圣继绝学", "为万世开太平"};
Stream<String> arrStream = Stream.of(arr);
ArrayList<String> list1 = new ArrayList<>();
Stream<ArrayList<String>> list11 = Stream.of(list1);
}
}
2. foreach方法
void foreach(Consumer<? super T> action);
package com.qfedu.first.streamfunction;
import org.w3c.dom.ls.LSOutput;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;
public class Demo1 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("111");
list.add("2222");
list.add("3333");
list.add("4444");
Stream<String> stream = list.stream();
stream.forEach(new Consumer<String>() {
@Override
public void accept(String string) {
System.out.println(string);
}
});
stream.forEach(string -> System.out.println(string));
stream.forEach(System.out::println);
}
}
3. filter方法
Stream<T> filter(Predicate<? super T> condition);
package com.qfedu.first.streamfunction;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo2 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("111");
list.add("222");
list.add("33");
list.add("4444");
Stream<String> stringStream = list.stream().filter(s -> s.length() >= 3);
stringStream.forEach(System.out::println);
}
}
4. map方法
<R> Stream<R> map(Function<? super T, ? super R> fun);
package com.qfedu.first.streamfunction;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo3 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("1, ljw, 22");
list.add("2, lzw, 36");
list.add("3, lq, 46");
list.add("4, lb, 56");
list.add("5, fsc, 66");
list.add("6, zwj, 76");
System.out.println(list);
Stream<Person> personStream = list.stream().map(s -> {
String[] split = s.split(",");
Person person = new Person();
person.setId(Integer.parseInt(split[0]));
person.setName(split[1]);
person.setAge(Integer.parseInt(split[2]));
return person;
});
personStream.forEach(System.out::println);
}
}
5. count方法
long count();
package com.qfedu.first.streamfunction;
import java.util.ArrayList;
public class Demo4 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("111");
list.add("222");
list.add("33");
list.add("4444");
long count = list.stream().filter(s -> s.length() >= 3).count();
System.out.println(count);
}
}
6. limit方法
Stream<T> limit(long maxSize);
package com.qfedu.first.streamfunction;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo5 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("11");
list.add("22");
list.add("33");
list.add("444");
list.add("55");
list.add("6666");
Stream<String> stream = list.stream();
stream.limit(5).forEach(System.out::println);
}
}
7. skip方法
Stream<T> skip(long n);
package com.qfedu.first.streamfunction;
import java.util.ArrayList;
public class Demo6 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("11");
list.add("22");
list.add("3333");
list.add("4444");
list.add("555555");
list.add("66666");
list.stream().skip(2).forEach(System.out::println);
}
}
8. concat方法
static Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)
package com.qfedu.first.streamfunction;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo7 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("11");
list.add("22");
list.add("33");
list.add("444");
list.add("55");
list.add("6666");
ArrayList<String> list1 = new ArrayList<>();
list.add("11");
list.add("22");
list.add("3333");
list.add("4444");
list.add("555555");
list.add("66666");
Stream<String> stream = list.stream();
Stream<String> stream1 = list1.stream();
Stream<String> concat = Stream.concat(stream, stream1);
concat.forEach(System.out::println);
}
}