本帖最后由 小石姐姐 于 2019-5-23 16:18 编辑
1.函数式接口1.1函数式接口概述【理解】1.2函数式接口作为方法的参数【应用】需求描述 定义一个类(RunnableDemo),在类中提供两个方法 一个方法是:startThread(Runnable r) 方法参数Runnable是一个函数式接口 一个方法是主方法,在主方法中调用startThread方法 代码演示
[AppleScript] 纯文本查看 复制代码 public class RunnableDemo {
public static void main(String[] args) {
//在主方法中调用startThread方法
//匿名内部类的方式
startThread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "线程启动了");
}
});
//Lambda方式
startThread(() -> System.out.println(Thread.currentThread().getName() + "线程启动了"));
}
private static void startThread(Runnable r) {
new Thread(r).start();
}
}
1.3函数式接口作为方法的返回值【应用】需求描述 定义一个类(ComparatorDemo),在类中提供两个方法 一个方法是:Comparator<String> getComparator() 方法返回值Comparator是一个函数式接口 一个方法是主方法,在主方法中调用getComparator方法 代码演示 [AppleScript] 纯文本查看 复制代码 public class ComparatorDemo {
public static void main(String[] args) {
//定义集合,存储字符串元素
ArrayList<String> array = new ArrayList<String>();
array.add("cccc");
array.add("aa");
array.add("b");
array.add("ddd");
System.out.println("排序前:" + array);
Collections.sort(array, getComparator());
System.out.println("排序后:" + array);
}
private static Comparator<String> getComparator() {
//匿名内部类的方式实现
// return new Comparator<String>() {
// @Override
// public int compare(String s1, String s2) {
// return s1.length()-s2.length();
// }
// };
//Lambda方式实现
return (s1, s2) -> s1.length() - s2.length();
}
}
1.8常用函数式接口之Predicate【应用】- Strem流2.1体验Stream流【理解】
案例需求 按照下面的要求完成集合的创建和遍历
原始方式示例代码
[AppleScript] 纯文本查看 复制代码 public class StreamDemo {
public static void main(String[] args) {
//创建一个集合,存储多个字符串元素
ArrayList<String> list = new ArrayList<String>();
list.add("林青霞");
list.add("张曼玉");
list.add("王祖贤");
list.add("柳岩");
list.add("张敏");
list.add("张无忌");
//把集合中所有以"张"开头的元素存储到一个新的集合
ArrayList<String> zhangList = new ArrayList<String>();
for(String s : list) {
if(s.startsWith("张")) {
zhangList.add(s);
}
}
// System.out.println(zhangList);
//把"张"开头的集合中的长度为3的元素存储到一个新的集合
ArrayList<String> threeList = new ArrayList<String>();
for(String s : zhangList) {
if(s.length() == 3) {
threeList.add(s);
}
}
// System.out.println(threeList);
//遍历上一步得到的集合
for(String s : threeList) {
System.out.println(s);
}
System.out.println("--------");
//Stream流来改进
// list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(s -> System.out.println(s));
list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(System.out::println);
}
} 使用Stream流示例代码
[AppleScript] 纯文本查看 复制代码 public class StreamDemo {
public static void main(String[] args) {
//创建一个集合,存储多个字符串元素
ArrayList<String> list = new ArrayList<String>();
list.add("林青霞");
list.add("张曼玉");
list.add("王祖贤");
list.add("柳岩");
list.add("张敏");
list.add("张无忌");
//Stream流来改进
list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(System.out::println);
}
} Stream流的好处
|
|