1. 代码示例
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);
}
}
2. filter/sorted/compareTo/forEach/collect
3. Collectors.toList/minBy
4. Comparator.comparing/comparingInt/
(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}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 hi@niewj.com