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----------------------");
        }
    }
}


posted on 2020-12-26 17:47  剑舞红颜笑i  阅读(60)  评论(0)    收藏  举报