Stream在開發中的應用
package com.wkcto.stream;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.BinaryOperator;
import java.util.stream.Collectors;
/**
* Author : 動力節點老崔
*/
public class Test03 {
public static void main(String[] args) {
//把Car小汽車的數據保存到List集合中
List<Car> carshop = new ArrayList<>();
carshop.add(new Car("Benz", false, 68, CarType.SUV));
carshop.add(new Car("Audi", true, 28, CarType.HATCHBACK));
carshop.add(new Car("BMW", false, 88, CarType.HATCHBACK));
carshop.add(new Car("Geeley", true, 18, CarType.HATCHBACK));
carshop.add(new Car("Xiali", true, 8, CarType.THREECOMPARTMENT));
carshop.add(new Car("Haval", false, 18, CarType.SUV));
carshop.add(new Car("Jeep", true, 38, CarType.SUV));
carshop.add(new Car("Honda", false, 28, CarType.THREECOMPARTMENT));
carshop.add(new Car("Chery", true, 18, CarType.THREECOMPARTMENT));
carshop.add(new Car("Benz", false, 58, CarType.THREECOMPARTMENT));
//1根據價格降序排序后,顯示汽車品牌
carshop.stream()
.sorted((c1,c2) -> c2.getPrice()-c1.getPrice())
.map(Car::getBrand)
.distinct()
.forEach(System.out::println);
System.out.println("---------------------");
//2 找出已賣的車, 按價格升序排序
carshop.stream()
.filter(car -> car.isSold() )
.sorted(Comparator.comparing(Car::getPrice))
.forEach(System.out::println);
System.out.println("---------------------");
//3 查看有哪些車型
carshop.stream()
.map(car -> car.getType())
.distinct()
.forEach(System.out::println);
System.out.println("---------------------");
//4SUV型號的車有哪些
List<Car> collect = carshop.stream()
.filter(car -> car.getType() == CarType.SUV)
.collect(Collectors.toList());
System.out.println( collect );
// 40萬以下的車的品牌, 排序
carshop.stream()
.filter(car -> car.getPrice() < 40)
.map(Car::getBrand)
.distinct()
.sorted()
.forEach(System.out::println);
System.out.println("---------------------");
//6)統計沒有賣出去的車的數量
System.out.println( carshop.stream().filter(car -> !car.isSold()).count() );
//7)判斷是否有Geeley品牌的汽車
System.out.println( carshop.stream().anyMatch(car -> "Geeley".equals(car.getBrand())));
//8)最貴的車的價格
System.out.println(carshop.stream().map(Car::getPrice).reduce(Integer::max).get() );
//9)顯示已賣出去最貴的車
System.out.println( carshop.stream().filter(Car::isSold)
// .reduce(BinaryOperator.maxBy((car1, car2)->(car1.getPrice()- car2.getPrice())))
.collect(Collectors.maxBy(Comparator.comparing(Car::getPrice)))
.get()
);
}
}
package com.wkcto.stream;
import java.util.Objects;
/**
* Author : 動力節點老崔
*/
public class Car {
private String brand; //品牌
private boolean sold; //是否已賣
private int price;
private CarType type; //車型
public Car(String brand, boolean sold, int price, CarType type) {
this.brand = brand;
this.sold = sold;
this.price = price;
this.type = type;
}
public Car() {
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Car car = (Car) o;
return sold == car.sold &&
price == car.price &&
Objects.equals(brand, car.brand) &&
type == car.type;
}
@Override
public int hashCode() {
return Objects.hash(brand, sold, price, type);
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", sold=" + sold +
", price=" + price +
", type=" + type +
'}';
}
public String getBrand() {
return brand;
}
public Car setBrand(String brand) {
this.brand = brand;
return this;
}
public boolean isSold() {
return sold;
}
public Car setSold(boolean sold) {
this.sold = sold;
return this;
}
public int getPrice() {
return price;
}
public Car setPrice(int price) {
this.price = price;
return this;
}
public CarType getType() {
return type;
}
public Car setType(CarType type) {
this.type = type;
return this;
}
}
package com.wkcto.stream;
/**
* Author : 動力節點老崔
*/
public enum CarType {
HATCHBACK, THREECOMPARTMENT,SUV
}
對HashMap性能的提升