记录个人做的习题
首先新建两个类
创建**交易员类Trader **
/**
* @ClassName 交易员
* @Author samuel_zhuang
* @Date 2019/7/10 15:19
*/
public class Trader {
private String name;
private String city;
public Trader(String name, String city) {
this.name = name;
this.city = city;
}
//getter/setter省略...
@Override
public String toString() {
return "Trader{" +
"name='" + name + '\'' +
", city='" + city + '\'' +
'}';
}
}
创建交易员交易类Transaction
/**
* @ClassName 交易类
* @Author samuel_zhuang
* @Date 2019/7/10 15:21
*/
public class Transaction {
private Trader trader;
private int year;
private int value;
public Transaction(Trader trader, int year, int value) {
this.trader = trader;
this.year = year;
this.value = value;
}
public Transaction() {
}
//getter/setter省略...
@Override
public String toString() {
return "Transaction{" +
"trader=" + trader +
", year=" + year +
", value=" + value +
'}';
}
}
任务清单:
- 找出2011年发生的所有交易,并且按照交易额排序(从低到高)
- 交易员都在哪些城市工作过
- 查找所有来自剑桥的交易员 并且按照姓名排序
- 查找交易员的姓名字符串,按字母顺序排序
- 有没有交易员是在米兰工作的
- 打印生活在剑桥的交易员的所有交易额
- 查找最高交易额
- 找到最小交易额
testing…
public class TestTransaction {
List<Transaction> transactions = null;
@Before
public void before(){
Trader raoul = new Trader("Raoul","Cambridge");
Trader mario = new Trader("Mario","Milan");
Trader alan = new Trader("Alan","Cambridge");
Trader brian = new Trader("Brian","Cambridge");
transactions = 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)
);
}
@Test
public void test(){
// 找出2011年发生的所有交易,并且按照交易额排序(从低到高)
transactions.stream()
.filter(e->e.getYear()==2011)
.sorted((x,y)-> Integer.compare(x.getValue(),y.getValue()))
.forEach(System.out::println);
System.out.println("=======================================");
//交易员都在哪些城市工作过
transactions.stream().map(e->e.getTrader().getCity()).distinct().forEach(System.out::println);
System.out.println("=======================================");
//查找所有来自剑桥的交易员 并且按照姓名排序
transactions.stream()
.filter(e->e.getTrader().getCity().equals("Cambridge"))
. map(Transaction::getTrader)
. sorted((x,y)-> x.getName().compareTo(y.getName()))
.distinct().forEach(System.out::println);
System.out.println("=======================================");
//查找交易员的姓名字符串,按字母顺序排序
transactions.stream().map(Transaction::getTrader)
.map(Trader::getName)
.sorted(String::compareTo)
.distinct()
.forEach(System.out::println);
System.out.println("=======================================");
//有没有交易员是在米兰工作的
Boolean b = transactions.stream()
.map(Transaction::getTrader)
.anyMatch(e->e.getCity().equals("Milan"));
System.out.println(b);
System.out.println("=======================================");
//打印生活在剑桥的交易员的所有交易额
Integer sum = transactions.stream()
.filter(e->e.getTrader().getCity().equals("Cambridge"))
.map(Transaction::getValue)
.reduce(Integer::sum)
.get();
DoubleSummaryStatistics collect = transactions.stream()
.filter(e->e.getTrader().getCity().equals("Cambridge"))
.collect(Collectors.summarizingDouble(e -> e.getValue()));
System.out.println(collect.getSum()+"==="+sum);
System.out.println("=======================================");
//查找最高交易额
Integer max = transactions.stream().map(Transaction::getValue).reduce(Integer::max).get();
System.out.println(max);
System.out.println("======================================");
//找到最小交易额
Integer min = transactions.stream().map(Transaction::getValue).reduce(Integer::min).get();
System.out.println(min);
System.out.println("=======================================");
}
}