public 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 trader;
}
public int getYear() {
return year;
}
public int getValue() {
return value;
}
@Override
public String toString() {
return "Transaction{" +
"trader=" + trader +
", year=" + year +
", value=" + value +
'}';
}
}
package experencetext;
import java.util.*;
import java.util.stream.Collectors;
/**
- @version 1.0
- @Description TODO
- @Author scar
- @Date 2020/12/18 15:30
- (1) 找出2011年发生的所有交易,并按交易额排序(从低到高)。
- (2) 交易员都在哪些不同的城市工作过?
- (3) 查找所有来自于剑桥的交易员,并按姓名排序。
- (4) 返回所有交易员的姓名字符串,按字母顺序排序。
- (5) 有没有交易员是在米兰工作的?
- (6) 打印生活在剑桥的交易员的所有交易额。
- (7) 所有交易中,最高的交易额是多少?
- (8) 找到交易额最小的交易。
*/
public class TTest {
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)
);
Optional<Transaction> max = transactions.stream().max(Comparator.comparing(s -> s.getValue()));
System.out.println(max.map(s->s.getYear()));
//-----.limit(int)返回一个流,为元流的前()个元素
List<Transaction> collect4 = transactions.stream().limit(2).collect(Collectors.toList());
for (Transaction coll : collect4) {
System.out.println("limit-->"+coll);
}
//(1) 找出2011年发生的所有交易,并按交易额排序(从低到高)-----------------------------------
List<Transaction> collect5= transactions.stream().filter(s -> s.getYear() == 2011).sorted(Comparator.comparing(Transaction::getValue)).collect(Collectors.toList());
for (Transaction transaction : collect5) {
System.out.println(transaction);
}
System.out.println("-----------------1--------------------------------------------------");
//2.交易员都在哪些不同的城市工作过--------------------
Set<String> collect1 = transactions.stream().map(s -> s.getTrader().getCity()).collect(Collectors.toSet());
for (String s : collect1) {
System.out.println("城市:"+s);
}
System.out.println("-----------------2----------------------");
//3.查找所有来自于剑桥的交易员,并按姓名排序----------------------------------------
List<Transaction> collect2 = transactions.stream().filter(x -> x.getTrader().getCity() == "Cambridge").sorted(Comparator.comparing(t -> t.getTrader().getName())).collect(Collectors.toList());
for (Transaction transaction : collect2) {
System.out.println(transaction);
}
System.out.println("--------------------3--------------------");
//(4) 返回所有交易员的姓名字符串,按字母顺序排序-
String reduce = transactions.stream().map(s -> s.getTrader().getName()).sorted().reduce("", (n1, n2) -> n1 + n2);
System.out.println(reduce);
System.out.println("------------------4----------------------");
// (5) 有没有交易员是在米兰工作的?----------------
transactions.stream().filter(s->s.getTrader().getCity()=="Milan").forEach(s-> System.out.println(s.getTrader().getName()));
System.out.println("-----------------5------------------------------------------");
//(6) 打印生活在剑桥的交易员的所有交易额。---------------
transactions.stream().filter(x->x.getTrader().getCity()=="Cambridge").map(Transaction::getValue).forEach(System.out::println);
System.out.println("------------------6-----------------------------------------");
//7.所有交易中,最高的交易额是多少----------------------
Optional<Integer> reduce2 = transactions.stream().map(Transaction::getValue).reduce(Integer::max);
System.out.println(reduce);
System.out.println(reduce2.get());
System.out.println("----------------7-------------------------------------------");
// (8) 找到交易额最小的交易------------------------------
Optional<Transaction> min = transactions.stream().min(Comparator.comparing(Transaction::getValue));
System.out.println(min);
System.out.println("hashcode--->"+min.hashCode());
System.out.println("--------------8---------------------------------------------");
//-----------使用map--映射获取元素并存入collect集合---2012交易的人员姓名
Set<String> collect = transactions.stream().filter(s -> s.getYear() == 2012).map(s -> s.getTrader().getName()).collect(Collectors.toSet());
for (String s : collect) {
System.out.print(" 姓名:"+s);
System.out.println("-----------9----------------------");
}
}
}


浙公网安备 33010602011771号