public class Demo {
public static void main(String[] args) throws ClassNotFoundException {
List<Goods> list = new ArrayList<>();
Goods goods = new Goods("内裤", 33);
Goods goods2 = new Goods("丁字裤", 31);
Goods goods3 = new Goods("长裤", 32);
list.add(goods);
list.add(goods2);
list.add(goods3);
List<Goods> list2 = new ArrayList<>();
Goods goods4 = new Goods("香蕉", 20);
Goods goods5 = new Goods("苹果", 12);
Goods goods6 = new Goods("猕猴桃", 24);
list2.add(goods4);
list2.add(goods5);
list2.add(goods6);
// =====================排序===============================================
// 按照商品的价格进行升序
list = list.stream().sorted(Comparator.comparing(Goods::getPrice)).limit(3).collect(Collectors.toList());
// 加上reversed,就是降序排序
/*
* list =
* list.stream().sorted(Comparator.comparing(Goods::getPrice).reversed()).
* collect(Collectors.toList());
*/
// 输出排序后的信息
list.stream().forEach(element -> System.err.println(element.getName()));
// =======================map:获取list对象中的某个属性==============================
// 使用map,获取属性的特定信息
List<Double> goodsNameList = list.stream().map(Goods::getPrice).collect(Collectors.toList());
// 另外一种写法
List<String> goodNameList2 = list.stream().map(element -> element.getName()).collect(Collectors.toList());
goodsNameList.stream().forEach(element -> System.err.println(element));
// ==========================max和min 求最大值 最小值=====================
Optional<Goods> max = list2.stream().max(Comparator.comparing(Goods::getPrice));
Optional<Goods> min = list2.stream().min(Comparator.comparing(Goods::getPrice));
if (max.isPresent()) {
System.out.println("价格最高的水果是:" + max.get().getName());
}
if (min.isPresent()) {
System.err.println("价格最低的水果是:" + min.get().getName());
}
// ========================count 结合filter 条件计数================
// 查找价格大于30的货物数量
long count = list.stream().filter(good -> good.getPrice() > 30).count();
System.err.println("超过30的商品货物数量" + count);
// =======================查找与匹配: Stream API 通过
// allMatch、anyMatch、noneMatch、findFirst 和 findAny 方法
// 1.查看价格中是否有偶数
List<Integer> numbers = Arrays.asList(2, 2, 2);
if (numbers.stream().anyMatch(i -> i % 2 == 0)) {
System.out.println("集合里有偶数!");
}
// 2.查看 是否全部都是偶数
if(numbers.stream().allMatch(i ->i %2 == 0)) {
System.out.println("集合中全部都是偶数");
}
// 3.findFirst: 查出第一个的平方能被3整除的数字
List<Integer> numberList = Arrays.asList(2,3,4,5);
Optional<Integer> number = numberList.stream().filter(i -> i*i%3 ==0).findFirst();
System.err.println("第一个的平方能够被3整除的数字是:"+ number);
//=====================归约:reduce========================
//1.计算数组中数字之和
List<Integer> numList = Arrays.asList(3,3,4,3,54);
int sum = numList.stream().reduce(0, (a,b)->a*b);
//reduce(0, (a,b)->a+b) : 0,表示计算结果的初始化, (a,b)->a+b 是计算规则, 如果是乘法的话 ,第一个参数0 要改为1
System.err.println("数组元素之和是:"+ sum);
}
}
java中的stream平时最常用的几个方法
猜你喜欢
转载自blog.csdn.net/weixin_39634532/article/details/103102069
今日推荐
周排行