Stream基本操作:
Collection中提供了此接口的实例化方法:default Stream<E> stream()
Stream的主要功能是对数据进行分析处理,尤其是集合中数据的分析操作。
代码示例:
显示元素个数:
public class Demo2 {public static void main(String[] args) {List<String> list = new ArrayList<>();Collections.addAll(list, "Hello", "Word", "Happy", "Hi", "Has");Stream<String> stream = list.stream();//元素个数System.out.println(stream.count());}}
filter:
Stream<T> filter(Predicate<? super T> predicate);
采用了断言式的函数式接口
public class Demo2 {public static void main(String[] args) {List<String> list = new ArrayList<>();Collections.addAll(list, "Hello", "Word", "Happy", "Hi", "Has");Stream<String> stream = list.stream();//有几个是含有字母H的System.out.println(stream.filter((ele) -> ele.toUpperCase().contains("H")).count());}}
数据采集:
public class Demo2 {public static void main(String[] args) {List<String> list = new ArrayList<>();Collections.addAll(list, "Hello", "Word", "Happy", "Hi", "Has");Stream<String> stream = list.stream();//将满足条件的数据收集变为List集合List<String> list1=stream.filter((ele) -> ele.toUpperCase().contains("H")).collect(Collectors.toList());System.out.println(list1);}}
outPut:
[Hello, Happy, Hi, Has]
分页处理:
public class Demo2 {public static void main(String[] args) {List<String> list = new ArrayList<>();Collections.addAll(list, "Hello", "Word", "Happy", "Hi", "Has");Stream<String> stream = list.stream();//将满足条件的数据收集变为List集合//限制最多3个,跳过一个List<String> list1=stream.filter((ele) -> ele.toUpperCase().contains("H")).limit(3).skip(1).collect(Collectors.toList());System.out.println(list1);}}
MapReduce:
代码结构大致如下:
java.util.stream.Stream;class People{String name;int price;People(String name,int price){this.name=name;this.price=price;}public void setName(String name) {this.name = name;}public void setPrice(int price) {this.price = price;}public String getName() {return name;}public int getPrice() {return price;}}public class Demo2 {public static void main(String[] args) {List<People> list = new ArrayList<>();list.add(new People("张二三",10000));list.add(new People("李二四",20000));list.add(new People("王二五",30000));list.add(new People("赵二六",40000));list.add(new People("王二麻子",50000));LongSummaryStatistics longSummaryStatistics = list.stream().filter((ele) -> ele.getName().contains("二")).mapToLong((price) -> price.getPrice() * price.getPrice()).summaryStatistics();System.out.println(longSummaryStatistics.getMax());System.out.println(longSummaryStatistics.getAverage());System.out.println(longSummaryStatistics.getCount());System.out.println(longSummaryStatistics.getMin());System.out.println(longSummaryStatistics.getSum());}}
这些大数据只是JDK本身提供的支持。
