首页 > 编程语言 >Java Lambda Stream

Java Lambda Stream

时间:2023-04-29 22:01:08浏览次数:34  
标签:Java string Stream List System numbers println Lambda out

java list 中的字符是否包括在另一个 list 中 ,::方法使用

::方法使用

条件:lambada表达式的主体仅包含一个表达式,且lambada表达式只调用一个已经存在的方法;被引用的方法的参数列表与lambada表达式的输入输出一致

以下是Java 8中方法引用的一些语法:

  • 静态方法引用(static method)语法:classname::methodname 例如:Person::getAge
  • 对象的实例方法引用语法:instancename::methodname 例如:System.out::println
  • 对象的超类方法引用语法: super::methodname
  • 类构造器引用语法: classname::new 例如:ArrayList::new
  • 数组构造器引用语法: typename[]::new 例如: String[]:new
DataStreamSource<String> kafkaDS = env.addSource(MyKafkaUtil.getKafkaConsumer(sourceTopic, groupId));

kafkaDS.map(line->{return JSON.parseObject(line);});
//Lambda 简写
kafkaDS.map(JSON::parseObject);
@Test
void printTest1() {
    List<String> list = Arrays.asList("a", "b", "c", "d");

    System.out.println("for  => ");
    for (String item : list) {
        AcceptMethod.printValue(item);
    }

    System.out.println("forEach => ");
    list.forEach(item -> AcceptMethod.printValue(item));


    System.out.println("forEach => ::");
    //list.forEach(new AcceptMethod()::printValue); //非静态方法
    list.forEach(AcceptMethod::printValue);



    System.out.println("forEach list => ::");
    List<LoginUser> loginUserList = new ArrayList<>();
    LoginUser loginUser = new LoginUser();
    loginUser.setOs("iOS");
    loginUserList.add(loginUser);
    loginUser = new LoginUser();
    loginUser.setOs("Android");
    loginUserList.add(loginUser);
    loginUserList.forEach(AcceptMethod::printList);

}

public static class AcceptMethod {
    public static void printValue(String str) {
        System.out.println("print value : " + str);
    }


    public static void printList(LoginUser map) {
        System.out.println("print value : " + map.getOs());
    }
}

Stream 示例

public class Java8Tester {
   public static void main(String args[]){
      System.out.println("使用 Java 7: ");
        
      // 计算空字符串
      List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
      System.out.println("列表: " +strings);
      long count = getCountEmptyStringUsingJava7(strings);
        
      System.out.println("空字符数量为: " + count);
      count = getCountLength3UsingJava7(strings);
        
      System.out.println("字符串长度为 3 的数量为: " + count);
        
      // 删除空字符串
      List<String> filtered = deleteEmptyStringsUsingJava7(strings);
      System.out.println("筛选后的列表: " + filtered);
        
      // 删除空字符串,并使用逗号把它们合并起来
      String mergedString = getMergedStringUsingJava7(strings,", ");
      System.out.println("合并字符串: " + mergedString);
      List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
        
      // 获取列表元素平方数
      List<Integer> squaresList = getSquares(numbers);
      System.out.println("平方数列表: " + squaresList);
      List<Integer> integers = Arrays.asList(1,2,13,4,15,6,17,8,19);
        
      System.out.println("列表: " +integers);
      System.out.println("列表中最大的数 : " + getMax(integers));
      System.out.println("列表中最小的数 : " + getMin(integers));
      System.out.println("所有数之和 : " + getSum(integers));
      System.out.println("平均数 : " + getAverage(integers));
      System.out.println("随机数: ");
        
      // 输出10个随机数
      Random random = new Random();
        
      for(int i=0; i < 10; i++){
         System.out.println(random.nextInt());
      }
        
      System.out.println("使用 Java 8: ");
      System.out.println("列表: " +strings);
        
      count = strings.stream().filter(string->string.isEmpty()).count();
      System.out.println("空字符串数量为: " + count);
        
      count = strings.stream().filter(string -> string.length() == 3).count();
      System.out.println("字符串长度为 3 的数量为: " + count);
        
      filtered = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.toList());
      System.out.println("筛选后的列表: " + filtered);
        
      mergedString = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.joining(", "));
      System.out.println("合并字符串: " + mergedString);
        
      squaresList = numbers.stream().map( i ->i*i).distinct().collect(Collectors.toList());
      System.out.println("Squares List: " + squaresList);
      System.out.println("列表: " +integers);
        
      IntSummaryStatistics stats = integers.stream().mapToInt((x) ->x).summaryStatistics();
        
      System.out.println("列表中最大的数 : " + stats.getMax());
      System.out.println("列表中最小的数 : " + stats.getMin());
      System.out.println("所有数之和 : " + stats.getSum());
      System.out.println("平均数 : " + stats.getAverage());
      System.out.println("随机数: ");
        
      random.ints().limit(10).sorted().forEach(System.out::println);
        
      // 并行处理
      count = strings.parallelStream().filter(string -> string.isEmpty()).count();
      System.out.println("空字符串的数量为: " + count);
   }
    
   private static int getCountEmptyStringUsingJava7(List<String> strings){
      int count = 0;
        
      for(String string: strings){
        
         if(string.isEmpty()){
            count++;
         }
      }
      return count;
   }
    
   private static int getCountLength3UsingJava7(List<String> strings){
      int count = 0;
        
      for(String string: strings){
        
         if(string.length() == 3){
            count++;
         }
      }
      return count;
   }
    
   private static List<String> deleteEmptyStringsUsingJava7(List<String> strings){
      List<String> filteredList = new ArrayList<String>();
        
      for(String string: strings){
        
         if(!string.isEmpty()){
             filteredList.add(string);
         }
      }
      return filteredList;
   }
    
   private static String getMergedStringUsingJava7(List<String> strings, String separator){
      StringBuilder stringBuilder = new StringBuilder();
        
      for(String string: strings){
        
         if(!string.isEmpty()){
            stringBuilder.append(string);
            stringBuilder.append(separator);
         }
      }
      String mergedString = stringBuilder.toString();
      return mergedString.substring(0, mergedString.length()-2);
   }
    
   private static List<Integer> getSquares(List<Integer> numbers){
      List<Integer> squaresList = new ArrayList<Integer>();
        
      for(Integer number: numbers){
         Integer square = new Integer(number.intValue() * number.intValue());
            
         if(!squaresList.contains(square)){
            squaresList.add(square);
         }
      }
      return squaresList;
   }
    
   private static int getMax(List<Integer> numbers){
      int max = numbers.get(0);
        
      for(int i=1;i < numbers.size();i++){
        
         Integer number = numbers.get(i);
            
         if(number.intValue() > max){
            max = number.intValue();
         }
      }
      return max;
   }
    
   private static int getMin(List<Integer> numbers){
      int min = numbers.get(0);
        
      for(int i=1;i < numbers.size();i++){
         Integer number = numbers.get(i);
        
         if(number.intValue() < min){
            min = number.intValue();
         }
      }
      return min;
   }
    
   private static int getSum(List numbers){
      int sum = (int)(numbers.get(0));
        
      for(int i=1;i < numbers.size();i++){
         sum += (int)numbers.get(i);
      }
      return sum;
   }
    
   private static int getAverage(List<Integer> numbers){
      return getSum(numbers) / numbers.size();
   }
}

实例

/**
* java list 中的字符是否包括在另一个 list 中
*/
@Test
void anyMatchTest() {
    List<String> permission = Arrays.asList("A", "B", "D");
    List<String> arr = Arrays.asList("C", "D", "E", "F");
    boolean b = arr.stream().anyMatch(permission::contains);
    System.out.println("" + b);
}

/**
* 数组转Set\List
*/
void anyMatchTest() {
 String[] permsArr = "a,b,c".split(",");
 Set<String> permsSet = Arrays.stream(permsArr).collect(Collectors.toSet());
}



标签:Java,string,Stream,List,System,numbers,println,Lambda,out
From: https://blog.51cto.com/u_15116285/6236966

相关文章

  • Java学习2——第四-六次题目集的分析与总结
     一.前言 本次Blog是对java学习中第二阶段练习的一个总结,作为刚学习JAVA的小白,以下依旧只是本人作为普通学生,以当前能力和状态所做出的总结和分析,不足之处也欢迎各位大佬的指正! 这次的三个题目集,题量除了题目集六很少外,其它都是正常数量,当然题目集六的题也是最难的。总体难......
  • JavaWeb回顾与小结(五)
    Mybatis基础操作环境准备工作准备数据库表创建一个新的springboot工程,选择引入对应的起步依赖(mybatis,mysql驱动,lombok)application.properties中引入数据库连接信息创建对应的实体类Emp(实体类属性采用驼峰命名)准备Mapper接口EmpMapper根据主键删除SQL语句delete......
  • JavaWeb回顾与小结(四)
    数据库操作-DQLDQL英文全称是DataQueryLanguage(数据查询语言),用来查询数据库表中的记录基本查询条件查询where分组查询groupby排序查询orderby分页查询limit基本查询语法查询多个字段select字段1,字段2,字段3from表名;查询所有字段(通配符)select*from......
  • Java中定时任务的6种实现方式,你知道几种?
    几乎在所有的项目中,定时任务的使用都是不可或缺的,如果使用不当甚至会造成资损。还记得多年前在做金融系统时,出款业务是通过定时任务对外打款,当时由于银行接口处理能力有限,外加定时任务使用不当,导致发出大量重复出款请求。还好在后面环节将交易卡在了系统内部,未发生资损。所以,系统......
  • Java中的四种进制
    1.对于整数,有四种表示方式二进制:0,1,满2进1,以0b或者0B开头十进制:0-9,满10进1八进制:0-7,满8进1,以数字0开头十六进制:0-9及A(10)-F(15),满16进1,以0x或者0X开头表示,此处的A-F不区分大小写......
  • Java题目集4~6的总结
    1.前言第四次作业主要涉及的知识点有通过查询JavaAPI文档,了解Scanner类中nextLine()等方法、String类中split()等方法、Integer类中parseInt()等方法的用法,了解LocalDate类中of()、isAfter()、isBefore()、until()等方法的使用规则,了解ChronoUnit类中DAYS、WEEKS、MONTHS等单位......
  • Java的Object类
    Object类Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的。但是并不需要这样写:publicclassEmployeeextendsObject如果没有明确地指出父类,Object就被认为是这个类的父类。所有的数组类型,不管是对象数组还是基本类型的数组都扩展了Object类。Employe......
  • Java原码、反码、补码
    二进制的最高位是符号位:0表示正数,1表示负数(0->01->-)正数的原码、反码、补码都是一样(三码合一)负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)负数的补码=它的反码+1,负数的反码=负数的补码-10的反码、补码都是0java没有无符号数,换言之,java中的数都是有符号的在......
  • Java的Object类
    Object类Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的。但是并不需要这样写:publicclassEmployeeextendsObject如果没有明确地指出父类,Object就被认为是这个类的父类。所有的数组类型,不管是对象数组还是基本类型的数组都扩展了Object类。Employ......
  • apollo启动报错java.lang.NoClassDefFoundError PemObjectGenerator
    启动apollo时,报错。java.lang.NoClassDefFoundError:org/bouncycastle/util/io/pem/PemObjectGenerator很明显类没找到,根据经验判断,很可能是maven依赖问题。解决方案apollo版本1.1.4。目前相关的是:org.bouncycastle:bcpkix-jdk15on:jar:1.55org.bouncycastle:bcprov-jdk15on:jar......