目录
Stream
Stream是数据流计算,计算速度非常快。
并行数据流计算为:public default Stream paralleStream();(JDK 1.8)
数据流计算为:public default Stream Stream();(JDK 1.8)
常用方法:
方法 | 说明 |
---|---|
public long count() | 计算数据的个数 |
public Stream limit(long maxSize) | 设置集合最多可以放置的个数 |
public Stream skip(long n) | 设置跳过的个数 |
示例:
public class TestStream {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
Collections.addAll(list, "Java", "JavaScript", "C", "R", "C#");
//将数据转成数据流
Stream<String> stream = list.stream();
/*
获取集合中带有J的数据的个数
int number = (int) stream.filter((element) -> element.toLowerCase().contains("j")).count();
System.out.println(number);
结果:2
*/
/*
获取带J的数据重新组装成一个集合
List<String> subList = stream.filter((element) -> element.toLowerCase().contains("j")).collect(Collectors.toList());
System.out.println(subList.toString());
结果:[Java,JavaScript]
*/
/*
skip(跳过多少数据)
limit(集合最多放多少数据)
*/
//获取加了skip()和limit()的数据集合
List<String> newList = stream.filter((element) ->element.toLowerCase().contains("j")).skip(1).limit(1).collect(Collectors.toList());
System.out.println(newList);
stream.close();
//结果:[Java]
}
}
MapReduce
- Map处理:对数据进行各种的先期处理(计算、 转型等)。
- Reduce处理:数据的统计计算,针对处理好的数据内容进行统计操作。
实例:
public class TestMapReduce {
public static void main(String[] args) {
List<Ball> list = new ArrayList<>();
Collections.addAll(list,
new Ball("篮球", 199.9, 20),
new Ball("足球", 109.9, 200),
new Ball("排球", 59.9, 300),
new Ball("蹴鞠", 789.9, 5));
Stream<Ball> stream = list.stream();
DoubleSummaryStatistics doubleSummaryStatistics = stream.filter((element) -> (element.getName())
.contains("球")).mapToDouble((obj) -> obj.getPrice() * obj.getAmount()).summaryStatistics();
System.out.println("购买数量:" + doubleSummaryStatistics.getCount());
System.out.println("总花销:" + doubleSummaryStatistics.getSum());
System.out.println("最高价格:" + doubleSummaryStatistics.getMax());
System.out.println("最低价格:" + doubleSummaryStatistics.getMin());
System.out.println("平均价格:" + doubleSummaryStatistics.getAverage());
}
}
class Ball {
private String name;
private double price;
private double amount;
public Ball(String name, double price, double amount) {
this.name = name;
this.price = price;
this.amount = amount;
}
public double getPrice() {
return price;
}
public String getName() {
return name;
}
public double getAmount() {
return amount;
}
@Override
public String toString() {
return "Ball{" +
"name='" + name + '\'' +
", price=" + price +
", amount=" + amount +
'}';
}
}
结果:
购买数量:3
总花销:43948.0
最高价格:21980.0
最低价格:3998.0
平均价格:14649.333333333334