package wen; import java.util.*; public class dome { public static void main(String[] args) { Trader raoul = new Trader("Raoul", "Cambridge"); Trader mario = new Trader("Mario", "Milan"); Trader alan = new Trader("Alan", "Cambridge"); Trader brian = new Trader("Brian", "Cambridge"); List<Transaction> 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) ); System.out.println("2011年的所有交易按低到高排序"); transactions.stream() .filter(item->item.getYear()==2011) .sorted((o1,o2) -> o1.getValue() - o2.getValue()) .forEach(System.out::println); System.out.println("(2) 交易员都在哪些不同的城市工作过?"); transactions.stream() .map(item->item.getTrader().getCity()) .distinct() .forEach(System.out::println); System.out.println("(3) 查找所有来自于剑桥的交易员,并按姓名排序。"); transactions.stream() .filter(item->item.getTrader().getCity().equals("Cambridge")) .sorted(((o1, o2) -> o1.getTrader().getName().length()-o2.getTrader().getName().length())) .map(item->{ HashMap<Object, Object> hashMap = new HashMap<>(); hashMap.put("name",item.getTrader().getName()); return hashMap; } ).forEach(System.out::println); System.out.println("(4) 返回所有交易员的姓名字符串,按字母顺序排序"); transactions.stream() .sorted(Comparator.comparing(item->item.getTrader().getName())) .map(item->{ HashMap<Object, Object> hashMap = new HashMap<>(); hashMap.put("name",item.getTrader().getName()); return hashMap; } ).forEach(System.out::println); System.out.println("(5) 有没有交易员是在米兰工作的?"); transactions.stream() .filter(item->item.getTrader().getCity().equals("Milan")) .forEach(System.out::println); System.out.println("(6) 打印生活在剑桥的交易员的所有交易额。"); Optional<Integer> cambridge = transactions.stream() .filter(item -> item.getTrader().getCity().equals("Cambridge")) .map(item -> item.getValue()) .reduce((a, b) -> a + b); System.out.println(cambridge.get()); System.out.println("(7) 所有交易中,最高的交易额是多少?"); Optional<Transaction> max = transactions.stream() .max((o1, o2) -> o1.getValue() - o2.getValue()); System.out.println(max.get().getValue()); System.out.println("找到交易额最小的交易。"); Optional<Transaction> min = transactions.stream() .min((o1, o2) -> o1.getValue() - o2.getValue()); System.out.println(min.get().getValue()); } } //交易员类 class Trader { private final String name; private final String city; public Trader(String name, String city) { this.name = name; this.city = city; } public String getName() { return name; } public String getCity() { return city; } @Override public String toString() { return "Trader{" + "name='" + name + '\'' + ", city='" + city + '\'' + '}'; } } //Transaction(交易记录) class Transaction { private final Trader trader; private final int year; private final int value; public Transaction(Trader trader, int year, int value){ this.trader = trader; this.year = year; this.value = value; } public Trader getTrader(){ return this.trader; } public int getYear(){ return this.year; } public int getValue(){ return this.value; } public String toString(){ return "{" + this.trader + ", " + "year: "+this.year+", " + "value:" + this.value +"}"; } }
stream练习
最新推荐文章于 2024-08-02 08:40:40 发布
本文介绍了一个Java程序,展示了如何使用集合操作对交易员(Trader)的交易记录进行排序、城市分析、交易员筛选及交易额统计。通过交易类Transaction和交易员类Trader,演示了数据流操作、映射和过滤功能。
摘要由CSDN通过智能技术生成