package com.niewj.sbdemo.java8; import lombok.extern.slf4j.Slf4j; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; /** * @Author weijun.nie * @Date 2020/5/26 10:35 * @Version 1.0 */ @Slf4j public class TranTestDemo { public static void main(String[] args) { Trader niuj = new Trader("nj牛進", "上海"); Trader maik = new Trader("mk買康", "香港"); Trader niuf = new Trader("nf牛發", "上海"); Trader jiny = new Trader("jy靳揚", "上海"); List<Transaction> transactions = Arrays.asList( new Transaction(jiny, 2011, 300), new Transaction(niuj, 2012, 1000), new Transaction(niuj, 2011, 400), new Transaction(maik, 2012, 710), new Transaction(maik, 2012, 700), new Transaction(niuf, 2012, 950) ); // (1) 找出2011年發生的全部交易,並按交易額排序(從低到高)。 // (1-1). 打印 log.info("(1)(1-1).遍歷打印1:"); transactions.stream().filter(t -> 2011 == t.getYear()).sorted((t1, t2) -> Integer.valueOf(t1.getValue()).compareTo(Integer.valueOf(t2.getValue()))).forEach(System.out::println); log.info("(1)(1-2).遍歷打印2:"); transactions.stream().filter(t -> 2011 == t.getYear()).sorted(Comparator.comparingInt(Transaction::getValue)).forEach(System.out::println); log.info("(1)(1-3).遍歷打印3:"); transactions.stream().filter(t -> 2011 == t.getYear()).sorted(Comparator.comparing(Transaction::getValue)).forEach(System.out::println); log.info("(1)(1-4).返回集合:"); // (1-2). 返回List<Transaction> List<Transaction> result1List = transactions.stream().filter(t -> 2011 == t.getYear()).sorted(Comparator.comparingInt(Transaction::getValue)).collect(Collectors.toList()); log.info("(1)(1-4).找出2011年發生的全部交易,並按交易額排序(從低到高): {}", result1List); // (2) 交易員都在哪些不一樣的城市工做過? List<String> cities = transactions.stream().map(t -> t.getTrader().getCity()).distinct().collect(Collectors.toList()); log.info("(2).交易員都在哪些不一樣的城市工做過: {}", cities); // (3) 查找全部來自於上海的交易員,並按姓名排序。 List<Trader> SHTradersSorted = transactions.stream().map(Transaction::getTrader).filter(t -> t.getCity().equals("上海")).sorted(Comparator.comparing(Trader::getName)).collect(Collectors.toList()); log.info("(3).查找全部來自於上海的交易員,並按姓名排序: {}", SHTradersSorted); // (4) 返回全部交易員的姓名字符串,按字母順序排序。 List<String> traderNamesList = transactions.stream().map(t -> t.getTrader().getName()).distinct().sorted().collect(Collectors.toList()); log.info("(4).返回全部交易員的姓名字符串,按字母順序排序: {}", traderNamesList); // (5) 有沒有交易員是在北京工做的? boolean hasInBeijing = transactions.stream().filter(t -> t.getTrader().getCity().equals("北京")).findAny().isPresent(); log.info("(5).有沒有交易員是在北京工做的:{}", hasInBeijing); // (6) 打印生活在上海的交易員的全部交易額。 List<Integer> valuesInShanghai = transactions.stream().filter(t -> t.getTrader().getCity().equals("上海")).map(t -> t.getValue()).collect(Collectors.toList()); log.info("(6).打印生活在上海的交易員的全部交易額: {}", valuesInShanghai); // (7) 全部交易中,最高的交易額是多少? Optional<Integer> max = transactions.stream().map(t -> t.getValue()).max(Comparator.comparingInt(Integer::intValue)); log.info("(7).全部交易中,最高的交易額是多少 {}", max.get()); // (8) 找到交易額最小的交易。 Transaction minTransanction = transactions.stream().collect(Collectors.minBy(Comparator.comparing(t -> t.getValue()))).get(); log.info("(8).找到交易額最小的交易 :{}", minTransanction); } }
(1)(1-1).遍歷打印1: {Trader{name='jy靳揚', city='上海'}, year: 2011, value:300} {Trader{name='nj牛進', city='上海'}, year: 2011, value:400} (1)(1-2).遍歷打印2: {Trader{name='jy靳揚', city='上海'}, year: 2011, value:300} {Trader{name='nj牛進', city='上海'}, year: 2011, value:400} (1)(1-3).遍歷打印3: {Trader{name='jy靳揚', city='上海'}, year: 2011, value:300} {Trader{name='nj牛進', city='上海'}, year: 2011, value:400} (1)(1-4).返回集合: (1)(1-4).找出2011年發生的全部交易,並按交易額排序(從低到高): [{Trader{name='jy靳揚', city='上海'}, year: 2011, value:300}, {Trader{name='nj牛進', city='上海'}, year: 2011, value:400}] (2).交易員都在哪些不一樣的城市工做過: [上海, 香港] (3).查找全部來自於上海的交易員,並按姓名排序: [Trader{name='jy靳揚', city='上海'}, Trader{name='nf牛發', city='上海'}, Trader{name='nj牛進', city='上海'}, Trader{name='nj牛進', city='上海'}] (4).返回全部交易員的姓名字符串,按字母順序排序: [jy靳揚, mk買康, nf牛發, nj牛進] (5).有沒有交易員是在北京工做的:false (6).打印生活在上海的交易員的全部交易額: [300, 1000, 400, 950] (7).全部交易中,最高的交易額是多少 1000 (8).找到交易額最小的交易 :{Trader{name='jy靳揚', city='上海'}, year: 2011, value:300}