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本身提供的支持。