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 */@Slf4jpublic 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==============================="); 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("======================遍历打印2==============================="); transactions.stream().filter(t -> 2011 == t.getYear()).sorted(Comparator.comparingInt(Transaction::getValue)).forEach(System.out::println); log.info("======================遍历打印3==============================="); transactions.stream().filter(t -> 2011 == t.getYear()).sorted(Comparator.comparing(Transaction::getValue)).forEach(System.out::println); log.info("======================返回集合==============================="); // (1-2). 返回List<Transaction> List<Transaction> result1List = transactions.stream().filter(t -> 2011 == t.getYear()).sorted(Comparator.comparingInt(Transaction::getValue)).collect(Collectors.toList()); log.info("找出2011年发生的所有交易,并按交易额排序(从低到高):\t{}", result1List); // (2) 交易员都在哪些不同的城市工作过? log.info("====================================================="); List<String> cities = transactions.stream().map(t -> t.getTrader().getCity()).distinct().collect(Collectors.toList()); log.info("交易员都在哪些不同的城市工作过:\t{}", cities); // (3) 查找所有来自于上海的交易员,并按姓名排序。 log.info("====================================================="); List<Trader> SHTradersSorted = transactions.stream().map(Transaction::getTrader).filter(t -> t.getCity().equals("上海")).sorted(Comparator.comparing(Trader::getName)).collect(Collectors.toList()); log.info("查找所有来自于上海的交易员,并按姓名排序:\t{}", SHTradersSorted); // (4) 返回所有交易员的姓名字符串,按字母顺序排序。 log.info("====================================================="); List<String> traderNamesList = transactions.stream().map(t -> t.getTrader().getName()).distinct().sorted().collect(Collectors.toList()); log.info("返回所有交易员的姓名字符串,按字母顺序排序:\t{}", traderNamesList); // (5) 有没有交易员是在北京工作的? log.info("====================================================="); boolean hasInBeijing = transactions.stream().filter(t -> t.getTrader().getCity().equals("北京")).findAny().isPresent(); log.info("有没有交易员是在北京工作的:{}", hasInBeijing); // (6) 打印生活在上海的交易员的所有交易额。 log.info("====================================================="); List<Integer> valuesInShanghai = transactions.stream().filter(t -> t.getTrader().getCity().equals("上海")).map(t -> t.getValue()).collect(Collectors.toList()); log.info("打印生活在上海的交易员的所有交易额:\t{}", valuesInShanghai); // (7) 所有交易中,最高的交易额是多少? log.info("====================================================="); Optional<Integer> max = transactions.stream().map(t -> t.getValue()).max(Comparator.comparingInt(Integer::intValue)); log.info("所有交易中,最高的交易额是多少\t{}", max.get()); // (8) 找到交易额最小的交易。 log.info("====================================================="); Transaction minTransanction = transactions.stream().collect(Collectors.minBy(Comparator.comparing(t -> t.getValue()))).get(); log.info("找到交易额最小的交易\t:{}", minTransanction); }}
======================遍历打印1===============================
{Trader{name='jy靳扬', city='上海'}, year: 2011, value:300}
{Trader{name='nj牛进', city='上海'}, year: 2011, value:400}
======================遍历打印2===============================
{Trader{name='jy靳扬', city='上海'}, year: 2011, value:300}
{Trader{name='nj牛进', city='上海'}, year: 2011, value:400}
======================遍历打印3===============================
{Trader{name='jy靳扬', city='上海'}, year: 2011, value:300}
{Trader{name='nj牛进', city='上海'}, year: 2011, value:400}
======================返回集合===============================找出2011年发生的所有交易,并按交易额排序(从低到高): [{Trader{name='jy靳扬', city='上海'}, year: 2011, value:300}, {Trader{name='nj牛进', city='上海'}, year: 2011, value:400}]
交易员都在哪些不同的城市工作过: [上海, 香港]
查找所有来自于上海的交易员,并按姓名排序: [Trader{name='jy靳扬', city='上海'}, Trader{name='nf牛发', city='上海'}, Trader{name='nj牛进', city='上海'}, Trader{name='nj牛进', city='上海'}]
返回所有交易员的姓名字符串,按字母顺序排序: [jy靳扬, mk买康, nf牛发, nj牛进]
有没有交易员是在北京工作的:false
打印生活在上海的交易员的所有交易额: [300, 1000, 400, 950]
所有交易中,最高的交易额是多少 1000
找到交易额最小的交易 :{Trader{name='jy靳扬', city='上海'}, year: 2011, value:300}