JDK8 Lambda练习
package cn.cdqf.lambda;
import java.util.Arrays;
import java.util.Comparator;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Optional2 {
public static void main(String[] args) {
List<Employee> employees = initData();
Stream<Employee> sorted = employees.stream().filter(employee -> employee.getBeginDate().equals("2005")).
sorted((e1, e2) -> Integer.compare(e2.getSalary() - e1.getSalary(), 0));
Stream<String> sorted1 = employees.stream().map(Employee::getCity).sorted();
Stream<String> sorted2 = employees.stream().map(Employee::getName).sorted(Comparator.reverseOrder());
boolean cd = employees.stream().anyMatch(employee -> employee.getCity().equals("成都"));
int sum = employees.stream().filter(employee -> employee.getCity().equals("成都")).mapToInt(Employee::getSalary).sum();
Optional<Employee> max = employees.stream().max(Comparator.comparingInt(Employee::getSalary));
Optional<Employee> min = employees.stream().min(Comparator.comparingInt(Employee::getSalary));
IntSummaryStatistics collect = employees.stream().collect(Collectors.summarizingInt(Employee::getSalary));
System.out.println(collect.getSum());
}
private static List<Employee> initData() {
Employee emma1 = new Employee("2005", "成都", "张瑞眼", 50000);
Employee emma2 = new Employee("2006", "北京", "马云", 60000);
Employee emma3 = new Employee("2007", "深圳", "马化腾", 30000);
Employee emma4 = new Employee("2008", "香港", "王健林", 40000);
Employee emma5 = new Employee("2005", "成都", "张小龙", 20000);
return Arrays.asList(emma1, emma2, emma3, emma4, emma5);
}
}
class Employee {
private String beginDate;
private String city;
private String name;
private int salary;
public String getBeginDate() {
return beginDate;
}
public void setBeginDate(String beginDate) {
this.beginDate = beginDate;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "Employee{" +
"beginDate='" + beginDate + '\'' +
", city='" + city + '\'' +
", name='" + name + '\'' +
", salary=" + salary +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Employee(String beginDate, String city, String name, int salary) {
this.beginDate = beginDate;
this.city = city;
this.name = name;
this.salary = salary;
}
}
package cn.cdqf.lambda;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;
import java.util.stream.Stream;
public class Optional3 {
public static void main(String[] args) {
List<Transaction> init = init();
Stream<Integer> sorted = init.stream().filter(t -> t.getYear() == 2011).map(Transaction::getValue).sorted();
Stream<String> cambridge = init.stream().map(Transaction::getTrader).
filter(trader -> trader.getCity().equals("Cambridge")).map(Trader::getName).sorted();
Stream<String> sorted1 = init.stream().map(Transaction::getTrader).map(Trader::getName).sorted();
boolean milan = init.stream().map(Transaction::getTrader).
map(Trader::getCity).anyMatch(Predicate.isEqual("Milan"));
Stream<Integer> cambridge1 = init.stream().filter(transaction ->
transaction.getTrader().getCity().equals("Cambridge")).map(Transaction::getValue);
Optional<Integer> max = init.stream().map(Transaction::getValue).max(Integer::compareTo);
Optional<Integer> min = init.stream().map(Transaction::getValue).min(Integer::compareTo);
min.ifPresent(System.out::println);
}
public static List<Transaction> init(){
Trader raoul = new Trader("Raoul", "Cambridge");
Trader mario = new Trader("Mario", "Milan");
Trader alan = new Trader("Alan", "Cambridge");
Trader brian = new Trader("Brian", "Cambridge");
return Arrays.asList(
new Transaction(brian, 2011, 300),
new Transaction(raoul, 2012, 1000),
new Transaction(raoul, 2011, 400),
new Transaction(mario, 2012, 710),
new Transaction(mario, 2012, 700),
new Transaction(alan, 2012, 950)
);
}
}
class Trader {
private String name;
private String city;
public Trader() {
}
public Trader(String name, String city) {
this.name = name;
this.city = city;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "Trader [name=" + name + ", city=" + city + "]";
}
}
class Transaction {
private Trader trader;
private int year;
private int value;
public Transaction() {
}
public Transaction(Trader trader, int year, int value) {
this.trader = trader;
this.year = year;
this.value = value;
}
public Trader getTrader() {
return trader;
}
public void setTrader(Trader trader) {
this.trader = trader;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
@Override
public String toString() {
return "Transaction [trader=" + trader + ", year=" + year + ", value="
+ value + "]";
}
}