zoukankan      html  css  js  c++  java
  • 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);
        }
    }

  • 相关阅读:
    通过运用CSS框架学到了什么
    浏览器判断一览表
    默认样式表之HTML4
    MooTools 1.4 源码分析 -overloadSetter
    MooTools 1.4 源码分析
    MooTools 1.4 源码分析
    javascript一些底层方法总结及用法
    viewport移动端适配,读文笔记
    vue获取v-model数据类型boolean改变成string
    contextify::ContextifyScript::New(const v8::FunctionCallbackInfo<v8::Value>&):
  • 原文地址:https://www.cnblogs.com/zhc-hnust/p/8830877.html
Copyright © 2011-2022 走看看