package com.Lucky.Function; import java.util.ArrayList; import java.util.Collections; import java.util.Locale; import java.util.function.Function; import java.util.function.IntFunction; /* 使用类名引用成员方法 Integer::parseInt 使用数组的构造方法 Integer[]::new */ //要求:将集合的字符串字母大写再输出 public class otherFunction { public static void main(String[] args) { String str="wdfgnbvcwsdfgh"; ArrayList<String> list=new ArrayList<>(); Collections.addAll(list,"sdwe","dfger","wertygh"); System.out.println("--匿名内部类写法----"); list.stream().map(new Function<String, String>() { @Override public String apply(String s) { String s1 = s.toUpperCase(); return s1; } }).forEach(s -> System.out.println(s)); System.out.println("--lamda写法----"); list.stream().map( s->s.toUpperCase()).forEach(s -> System.out.println(s)); System.out.println("--①类名引用成员方法:要根据独有的条件使用----"); /* public String toUpperCase() { return toUpperCase(Locale.getDefault()); } 疑问点:上面String类的toUpperCase源码,可是为什么明跟抽象方法的形参不一样还可以使用方法引用呢????? 方法引用: 使用条件:1.引用地方要是函数式接口:@FunctionalInterface 2.被引用的方法必须存在 3.被引用的方法的形参以及返回值要跟抽象方法的保持一致【区别在这】 {**** 被引用的方法的形参,需要跟抽象方法的第二个形参开始要保持一致, 如果抽象方法中没有第二个形参,那么被引用方法需要的是无参的成员方法 }**** 4.被引用的方法要满足当前抽象方法的需求 */ list.stream().map(String::toUpperCase).forEach(s -> System.out.println(s)); //////////////////////////////////////////////////////////////////////// System.out.println(); System.out.println("------------------使用数组的构造方法: 数组的类型要跟流中类型要一致---------------------------"); //要求:将集合的数据收集到数组中 ArrayList<Integer> intList=new ArrayList<>(); Collections.addAll(intList,1,2,3,4,5,6,7,8,9); System.out.println("--- //原始写法:----"); Integer[] ints = intList.stream().toArray(new IntFunction<Integer[]>() { @Override public Integer[] apply(int value) { return new Integer[value]; } }); for (Integer anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); System.out.println("--- //方法引用【数组】写法:----"); Integer[] integers = intList.stream().toArray(Integer[]::new); for (Integer an : integers) { System.out.print(an+"\t"); } } }
标签:String,System,引用,使用,println,Integer,方法,out From: https://www.cnblogs.com/Lucky-only/p/16971295.html