java1.8新特性学习笔记Stream流式操作

记录个人做的习题

首先新建两个类
创建**交易员类Trader **

/**
 * @ClassName 交易员
 * @Author samuel_zhuang
 * @Date 2019/7/10 15:19
 */
public class Trader {
    private String name;
    private String city;

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

   //getter/setter省略...

    @Override
    public String toString() {
        return "Trader{" +
                "name='" + name + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}

创建交易员交易类Transaction

/**
 * @ClassName 交易类
 * @Author samuel_zhuang
 * @Date 2019/7/10 15:21
 */
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 Transaction() {
    }

   //getter/setter省略...

    @Override
    public String toString() {
        return "Transaction{" +
                "trader=" + trader +
                ", year=" + year +
                ", value=" + value +
                '}';
    }
}

任务清单:

  1. 找出2011年发生的所有交易,并且按照交易额排序(从低到高)
  2. 交易员都在哪些城市工作过
  3. 查找所有来自剑桥的交易员 并且按照姓名排序
  4. 查找交易员的姓名字符串,按字母顺序排序
  5. 有没有交易员是在米兰工作的
  6. 打印生活在剑桥的交易员的所有交易额
  7. 查找最高交易额
  8. 找到最小交易额

testing…

public class TestTransaction {
   List<Transaction> transactions = null;

   @Before
   public void before(){
   Trader raoul = new Trader("Raoul","Cambridge");
   Trader mario = new Trader("Mario","Milan");
   Trader alan = new Trader("Alan","Cambridge");
   Trader brian = new Trader("Brian","Cambridge");

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

   }
   @Test
   public void test(){       
        // 找出2011年发生的所有交易,并且按照交易额排序(从低到高)
       transactions.stream()
   		        .filter(e->e.getYear()==2011)
   		        .sorted((x,y)-> Integer.compare(x.getValue(),y.getValue()))
   		        .forEach(System.out::println);
       System.out.println("=======================================");
       
		 //交易员都在哪些城市工作过
       transactions.stream().map(e->e.getTrader().getCity()).distinct().forEach(System.out::println);
       System.out.println("=======================================");
       
   	  //查找所有来自剑桥的交易员  并且按照姓名排序
       transactions.stream()
   		        .filter(e->e.getTrader().getCity().equals("Cambridge"))
   		        . map(Transaction::getTrader)
   		        . sorted((x,y)-> x.getName().compareTo(y.getName()))
   		        .distinct().forEach(System.out::println);
       System.out.println("=======================================");


      //查找交易员的姓名字符串,按字母顺序排序
       transactions.stream().map(Transaction::getTrader)
               .map(Trader::getName)
               .sorted(String::compareTo)
               .distinct()
               .forEach(System.out::println);
       System.out.println("=======================================");

     //有没有交易员是在米兰工作的
      Boolean b =  transactions.stream()
   		       .map(Transaction::getTrader)
   		       .anyMatch(e->e.getCity().equals("Milan"));
       System.out.println(b);
       System.out.println("=======================================");
       
   	  //打印生活在剑桥的交易员的所有交易额
       Integer sum = transactions.stream()
      		   .filter(e->e.getTrader().getCity().equals("Cambridge"))
               .map(Transaction::getValue)
               .reduce(Integer::sum)
               .get();
       DoubleSummaryStatistics collect = transactions.stream()
   		        .filter(e->e.getTrader().getCity().equals("Cambridge"))
   		        .collect(Collectors.summarizingDouble(e -> e.getValue()));
   	   System.out.println(collect.getSum()+"==="+sum);
       System.out.println("=======================================");
       
      //查找最高交易额
       Integer max = transactions.stream().map(Transaction::getValue).reduce(Integer::max).get();
       System.out.println(max);
       System.out.println("======================================");
       
      //找到最小交易额
       Integer min = transactions.stream().map(Transaction::getValue).reduce(Integer::min).get();
       System.out.println(min);
       System.out.println("=======================================");
       
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值