• Java8实战Lambda和Stram API学习


    public  class Trader{
        
        private String name;
        private String city;

        public Trader(String n, String c){
            this.name = n;
            this.city = c;
        }

        public String getName(){
            return this.name;
        }

        public String getCity(){
            return this.city;
        }

        public void setCity(String newCity){
            this.city = newCity;
        }

        public String toString(){
            return "Trader:"+this.name + " in " + this.city;
        }
    }

    public class Transaction{

        private Trader trader;
        private int year;
        private int value;

        public Transaction(Trader trader, int year, int value)
        {
            this.trader = trader;
            this.year = year;
            this.value = value;
        }

        public Trader getTrader(){
            return this.trader;
        }

        public int getYear(){
            return this.year;
        }

        public int getValue(){
            return this.value;
        }
        
        public String toString(){
            return "{" + this.trader + ", " +
                   "year: "+this.year+", " +
                   "value:" + this.value +"}";
        }
    }

    public class PuttingIntoPractice {
        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));
            
            // Query 1: Find all transactions from year 2011 and sort them by value (small to high).
            List<Transaction> tr2011 = transactions.stream().filter(transaction -> transaction.getYear() == 2011).sorted(comparing(Transaction::getValue)).collect(toList());
            System.out.println(tr2011);
            
            // Query 2: What are all the unique cities where the traders work?
            List<String> cities = transactions.stream().map(transaction -> transaction.getTrader().getCity()).distinct().collect(toList());
            System.out.println(cities);
            
            // Query 3: Find all traders from Cambridge and sort them by name.
            List<Trader> traders = transactions.stream().map(Transaction::getTrader).filter(trader -> trader.getCity().equals("Cambridge")).distinct().sorted(comparing(Trader::getName)).collect(toList());
            System.out.println(traders);
            
            // Query 4: Return a string of all traders’ names sorted alphabetically.
            String traderStr = transactions.stream().map(transaction -> transaction.getTrader().getName()).distinct().sorted().reduce(" ", (n1, n2) -> n1 + n2);
            System.out.println(traderStr);
            
            // Query 5: Are there any trader based in Milan?
            boolean milanBased = transactions.stream().anyMatch(transaction -> transaction.getTrader().getCity().equals("Milan"));
            System.out.println(milanBased);
            
            // Query 6: Update all transactions so that the traders from Milan are set to Cambridge.
            transactions.stream().map(Transaction::getTrader).filter(trader -> trader.getCity().equals("Milan")).forEach(trader -> trader.setCity("Cambridge"));
            System.out.println(transactions);
            
            // Query 7: What's the highest value in all the transactions?
            int highestValue = transactions.stream().map(Transaction::getValue).reduce(0, Integer::max);
            System.out.println(highestValue);
        }
    }

  • 相关阅读:
    深入理解系统调用
    基于mykernel 2.0编写一个操作系统内核
    如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
    如何评测软件工程知识技能水平?
    深入理解TCP的三次握手及其源代码
    Socket与系统调用深度分析
    未来的图书会是什么样子?
    构建调试Linux内核网络代码的环境MenuOS系统
    Python笔记005-神奇的+=
    Python笔记004-元组的拆包和命名元组
  • 原文地址:https://www.cnblogs.com/zhc-hnust/p/8830877.html
Copyright © 2020-2023  润新知