• 学习java第22天


    1.流

    得到流    Stream<T>stream = collection.stream();

    对于数组 : Arrays.sstream(ary)

    对于collection :  用list.stream()

    import java.util.*;
    class streamList {
       public static void main(String... args) {
     Collection<Person> people = Arrays.asList(
          new Person("Ted", 18, 88),
          new Person("Charlotte", 18, 88),
          new Person("Michael", 18, 99),
          new Person("Matthew", 19, 84),
          new Person("Matthew", 21, 84)
       );
     Object result =
     people.parallelStream()
      .filter( p -> p.age<20 )
      .sorted( (p1,p2)->p1.age-p2.age)
      .sorted( Person::better)
      .sorted( Comparator.comparing( Person::getName ) )
      .limit(5)
      .mapToDouble( p -> p.score )
      .average();
        System.out.println(result);
      }
    }
    class Person
    {
     public String name;
     public int age;
     public double score;
     public Person(String n, int a, double s) {
      name = n; age = a; score = s;
     }
     public String getName(){ return name;}
     @Override
     public String toString() {
      return String.format("%s[%d](%f)", name,age,score);
     }
     public static int better(Person p1, Person p2) {
      return (int)(p2.score - p1.score);
     }
    }
     
    对于map :  没有流,有相似方法
    map.merge

    *数组进行流化

    Arrays.stream(a)

              .filter(i -> i < 20)

              .map(i -> i*i)

              .max();

    import java.util.*;
    class streamArray
    {
     public static void main(String[] args)
     {
      int [] a = new int[100];
      for(int i=0; i<a.length; i++)
       a[i] = (int)(Math.random()*100);
      
      OptionalInt result=
       Arrays.stream(a).parallel()
       .filter( i -> i>20 )
       .map( i -> i*i )
       .sorted()
       .distinct()
       .limit(10)
       .max();
      System.out.println(
       result.isPresent()? "最大值为"+result.getAsInt(): "无值");
     }
    }
    2.并行的流式操作
    import java.util.*;
    class UseParallelStream
    {
     public static void main(String[] args)
     {
      List<Integer> a = Arrays.asList(1,2,5,7,3);
      System.out.println(
      a.parallelStream()
       .mapToInt(i->(int)i)
       .filter( i -> i>2 )
       .map( i -> i*i )
       .sorted()
       .distinct()
       .limit(10)
       .max()
      );
     }
    }
     
    明天学习内容:
    输入输出流
     
     
     
  • 相关阅读:
    笔记(二) C#sql语句
    [叩响C#之门]写给初学者:多线程系列(七)——互锁(Interlocked类)
    C# Async与Await的使用
    C#线程锁使用全功略
    一个C#的加锁解锁示例
    【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
    Control.BeginInvoke()和delegate的BeginInvoke()的区别
    crm04 action操作 和 多级过滤
    VIM和sed 替换字符串方法
    解决Centos关闭You have new mail in /var/spool/mail/root提示(转)
  • 原文地址:https://www.cnblogs.com/SirNie/p/13386377.html
Copyright © 2020-2023  润新知