Stream API习题
题目:
- 找出 2011 年发生的所有交易, 并按交易额排序(从低到高)
- 交易员都在哪些不同的城市工作过
- 查找所有来自剑桥的交易员,并按姓名排序
- 返回所有交易员的姓名字符串,按字母顺序排序
- 有没有交易员是在米兰工作的
- 打印生活在剑桥的交易员的所有交易额
- 所有交易中,最高的交易额是多少
- 找到交易额最小的交易
题目的代码:package com.company;
public 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 + "]"; }
}
交易类:
package com.company;
//交易类
public 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 + "]"; }
}
答案代码:
Transaction[] transactions = new Transaction[]{
new Transaction(new Trader("tom","wuhan"),1997,100),
new Transaction(new Trader("vic","beijing"),1995,2300),
new Transaction(new Trader("girls","wuhan"),1997,500),
new Transaction(new Trader("boys","jianqiao"),2011,600),
new Transaction(new Trader("boy2","jianqiao"),2011,600),
new Transaction(new Trader("yin","nanning"),2011,400),
new Transaction(new Trader("yin","nanning"),2011,500)
};
Stream<transaction> stream = Arrays.stream(transactions);
System.out.println("1. 找出 2011 年发生的所有交易, 并按交易额排序(从低到高)");
stream.filter(transaction -> transaction.getYear() == 2011).sorted((o1,o2) -> Integer.compare(o1.getValue(),o2.getValue())).forEach(System.out::println);
System.out.println("2. 交易员都在哪些不同的城市工作过");
Stream<transaction> stream2 = Arrays.stream(transactions);
stream2.map(transaction -> transaction.getTrader().getCity()).distinct().forEach(System.out::println);
System.out.println("3. 查找所有来自剑桥的交易员,并按姓名排序");
Stream<transaction> stream3 = Arrays.stream(transactions);
stream3.filter(transaction -> "jianqiao".equals(transaction.getTrader().getCity())).sorted((o1,o2) -> o1.getTrader().getName().compareTo(o2.getTrader().getName())).forEach(System.out::println);
System.out.println("4. 返回所有交易员的姓名字符串,按字母顺序排序");
Stream<transaction> stream4 = Arrays.stream(transactions);
Stream<string> stringStream = stream4.map(transaction -> transaction.getTrader().getName());
stringStream.sorted(String::compareTo).forEach(System.out::println);
System.out.println("5. 有没有交易员是在米兰工作的");
Stream<transaction> stream5 = Arrays.stream(transactions);
System.out.println(stream5.anyMatch(transaction -> "nanning".equals(transaction.getTrader().getCity())));
System.out.println("6. 打印生活在剑桥的交易员的所有交易额");
Stream<transaction> stream6 = Arrays.stream(transactions);
Stream<integer> integerStream = stream6.filter(transaction -> "jianqiao".equals(transaction.getTrader().getCity())).map(Transaction::getValue);
integerStream.forEach(System.out::println);
System.out.println("7. 所有交易中,最高的交易额是多少");
Stream<transaction> stream7 = Arrays.stream(transactions);
Optional<integer> max = stream7.map(transaction -> transaction.getValue()).max(Integer::compareTo);
System.out.println(max.get());
System.out.println("8. 找到交易额最小的交易");
Stream<transaction> stream8 = Arrays.stream(transactions);
Optional<transaction> min = stream8.min((o1, o2) -> Integer.compare(o1.getValue(), o2.getValue()));
System.out.println(min.get());
```</transaction></transaction></integer></transaction></integer></transaction></transaction></string></transaction></transaction></transaction></transaction>