zoukankan      html  css  js  c++  java
  • 像写SQL语句一样写Java代码

    1 @Data
    2 @AllArgsConstructor
    3 public class Trader {
    4 
    5     private final String name;
    6      private final String city;
    7 }
    1 @Data
    2 @AllArgsConstructor
    3 public class Transaction {
    4 
    5     private final Trader trader;
    6      private final int year;
    7      private final int value;
    8 }
    public class TraderTransactionTest {
         
         List<Transaction> transactions = null;
    //    List<Trader> traders = null;
    
        @Before
         public void beforeTest(){
             Trader zhangsan = new Trader("zhangsan", "shanghai");
             Trader lisi = new Trader("lisi", "beijing");
             Trader wangwu = new Trader("wangwu", "shanghai");
             Trader zhaoliu = new Trader("zhaoliu", "shanghai");
             
    //        traders = Arrays.asList(zhangsan, lisi, wangwu, zhaoliu);
             
             transactions = Arrays.asList(
                 new Transaction(zhaoliu, 2011, 300),
                 new Transaction(zhangsan, 2012, 1000),
                 new Transaction(zhangsan, 2011, 400),
                 new Transaction(lisi, 2012, 710),
                 new Transaction(lisi, 2012, 700),
                 new Transaction(wangwu, 2012, 950)
             );
         }
         
         //2011年发生的交易,按照交易额排序
         @org.junit.Test
         public void test1(){
             List<Transaction> l = transactions.stream().filter(t -> t.getYear() == 2011)
                     .sorted(Comparator.comparing(Transaction::getValue))
                     .collect(Collectors.toList());
             System.out.println(l);
         }
         
         //交易员都在哪些不同的城市工作过
         @org.junit.Test
         public void test2(){
    //        traders.stream().map(Trader::getCity).distinct().forEach(s -> System.out.print(s + "	"));
             transactions.stream().map(t -> t.getTrader().getCity()).distinct().forEach(s -> System.out.print(s + "	"));
         }
         
         //找出来自上海的交易员,按照名字排序
         @org.junit.Test
         public void test3(){
    //        List<Trader> l = traders.stream()
    //                .filter(t -> "shanghai".equals(t.getCity()))
    //                .sorted(Comparator.comparing(Trader::getName))
    //                .collect(Collectors.toList());
             List<Trader> l = transactions.stream().map(Transaction::getTrader)
                 .filter(t -> "shanghai".equals(t.getCity()))
                 .distinct()
                 .sorted(Comparator.comparing(Trader::getName))
                 .collect(Collectors.toList());
             System.out.println(l);
         }
         
         //返回交易员姓名字符串,并按照字母顺排序
         @org.junit.Test
         public void test4(){
             String traderStr = transactions.stream().map(t -> t.getTrader().getName())
                 .distinct()
                 .sorted()
                 .reduce("", (n1, n2) -> n1 + n2);
             
             traderStr = transactions.stream().map(t -> t.getTrader().getName())
                 .distinct()
                 .sorted()
                 .collect(Collectors.joining());
             
             System.out.println(traderStr);
         }
         
         //有没有交易员在上海工作
         @org.junit.Test
         public void test5(){
             transactions.stream().anyMatch(t -> t.getTrader().getCity().equals("shanghai"));
         }
         
         //生活在上海的交易员的所有交易额
         @org.junit.Test
         public void test6(){
             transactions.stream().filter(t -> "shanghai".equals(t.getTrader().getCity()))
                 .map(Transaction::getValue)
                 .forEach(v -> System.out.print(v + "	"));
         }
         
         //所有交易中,最高的交易额是多少
         @org.junit.Test
         public void test7(){
             Optional<Integer> o = transactions.stream().map(Transaction::getValue).reduce(Integer::max);
             System.out.println(o);
         }
         
         //找到交易额最小的交易
         @org.junit.Test
         public void test8(){
             Optional<Integer> o = transactions.stream().map(Transaction::getValue).reduce(Integer::min);
             System.out.println(o);
             
             Optional<Transaction> ot = transactions.stream().reduce((t1, t2) -> t1.getValue() < t2.getValue() ? t1 : t2);
             System.out.println(ot);
             
             ot = transactions.stream().min(Comparator.comparing(Transaction::getValue));
             System.out.println(ot);
             
         }
         
    }

    欢迎志同道合朋友,加QQ群:119126035,QQ:1415583094,微信:cq1415583094
    我的GitHub:https://github.com/cq1415583094
    公众号欢迎关注

  • 相关阅读:
    httpclient的maven依赖
    阿里云maven仓库镜像
    log4j2在webapp项目中的配置
    web.xml中的filter标签
    mybatis在xml文件中处理大于号小于号的方法
    javaweb(三十八)——mysql事务和锁InnoDB(扩展)
    javaweb(三十八)——事务
    javaweb(三十七)——获得MySQL数据库自动生成的主键
    javaweb学习总结(三十六)——使用JDBC进行批处理
    JavaWeb(三十五)——使用JDBC处理Oracle大数据
  • 原文地址:https://www.cnblogs.com/chuanqi1415583094/p/10052513.html
Copyright © 2011-2022 走看看