当前位置: 首页 > news >正文

免费企业网站源代码seo网站快排

免费企业网站源代码,seo网站快排,javaweb建设网站,陕西有色建设有限公司官方网站Java8中一个非常重要的特性就是Lambda表达式,我们可以把它看成是一种闭包,它允许把函数当做参数来使用,是面向函数式编程的思想,一定程度上可以使代码看起来更加简洁。 其实以上都不重要,重要的是能够提高我的开发效率…

Java8中一个非常重要的特性就是Lambda表达式,我们可以把它看成是一种闭包,它允许把函数当做参数来使用,是面向函数式编程的思想,一定程度上可以使代码看起来更加简洁。

其实以上都不重要,重要的是能够提高我的开发效率,为了工作效率避免无意义加班,使用Lambda表达式只能说好爽!一时用一时爽,一直用一直爽!但是学习可能很多人觉得很复杂于是放弃了,可读性确实很不好,我的建议是死记规则,学习常用的Lambda表达式就够了。因为,其他稀奇古怪的语法很可能被你老大看见了会请你喝茶,所以本篇博客就由浅入深介绍提高工作效率神器——Lambda常用表达式。

例子切入

比如创建一个线程并启动,一般我们这样写:

//匿名内部类写法
new Thread(new Runnable() {@Overridepublic void run() {System.out.println("内部类写法");}
}).start();

使用Lambda表达式可以这样写:

new Thread(() -> System.out.println("hello world")).start();

我知道你很急,但你先别急,后面我们详细介绍其用法。以上代码表明使用Lambda表达式写起来真的很爽,早写完早下班!如果你司是代码量绩效那别学了,先辞职再说![手动狗头]

使用场景

Lambda表达式的最最最常见的使用场景是 接口容器,凡是以后需要实现接口和操作容器都可以考虑使用Lambda表达式。实现接口需要注意,如果接口中仅有一个抽象方法需要实现可以使用Lambda表达式,否则有多个未实现的方法不能使用。上述例子也就是接口使用Lambda表达式的一种实现方式。下面分为接口和容器结合例子进行讲解。

接口

首先定义我们自己的接口,就是打印输入的字符串s,如下:

interface MyPrint{public void print(String s);
}

传统的实现方式就是需要实现MyPrint类然后重写print方法,这里就不再展示,我们直接使用Lambda表达式实现如下:

MyPrint myPrint = s -> System.out.println(s);
myPrint.print("hello world 1");

现在解释上述代码:等号左边是我们的接口类,使用多态的方式父类引用指向子类实现。那么右边就是我们对左边父类的实现。() -> {} 是Lambda的一个语法,()中的字符表示需要传入的参数,不需要写类型,使用占位符即可,如果()中没有参数表示该方法(指的是需要重写的方法)无参。{} 是方法体,具体的实现代码写在 {} 中。如果有多个参数可以写成 (a,b)->{return a+b} ,但是这还不够简介,记住:如果(a)只有一个参数那么不需要写 () 直接写 a,如果 {} 只有一行代码如果有return则不用写 return 也不用写 {},就写出一行需要返回的逻辑实现即可,例如上面代码实现标准写法是:

MyPrint myPrint = (s) -> {System.out.println(s)};

总结就是:能偷懒就偷懒,()->{} ,出错那你就按照标准的语法写,反正编译器会告诉你,如果只有一个参数可以省略() ,如果方法体只有一行代码可以省去return 单词和{} 。是不是超级简单,那么下面要升级难度了,
上述写法还可以进一步写成如下:

MyPrint myPrint = System.out::println; //等价于 s -> System.out.println(s);
myPrint.print("hello world 2");

这里就不得不介绍 :: 号的用法了,我们放到下一节讲解!

双冒号 :: 的用法

对于 :: 我的理解如下,假设有个Student类,其中有个方法 getName() ,那么student::getName 的意思就是 传入Student的对象student,调用它的getName()方法。等价于 (Student s)->{s.getName()} , 即

student::getName   等价于  (s)->{s.getName()} 或者  (Student s)->{s.getName()} 

所以,System.out::println 双冒号左边是对象,右边是该对象的方法。那有人会问那么参数s如何传的呢?我们再看,System.out::println; 等价于 s -> System.out.println(s); 其实println需要的是一个字符串参数,而MyPrint的print接口也是一个字符串参数,这种一对一的参数传递其实是隐式传递的,而且如果使用这种写法,参数必须是对应的!

以上情况是 对象::实例方法名; 那么也可以有 类名::静态方法名,例如 Integer::parseInt ,就是接受一个字符串,解析为整数。等价于 (String s)->{ Integer.parseInt(s)}。你会问你怎么知道参数是String,因为parseInt方法需要的就是String 啊。因此,如果你明白啦以上的规则,其实非常简单!现在还不适应没关系,通过下面的容器集合流处理案例,你会很明白!

Java 容器集合的Lambda用法

这里就非常简单了,基本都是Stream流的处理,配合Lambda表达式,简直写起来不要太爽了!这里还是以语法结合案例为驱动来讲解:

forEach 语法

使用它替代 for(int a : arr) ,简直太爽了,如下:

 // 使用Lambda表达式替代for循环List<Integer> arr = Arrays.asList(4, 1, 25);// forEach 表示从容器中依次取出每个元素进行{}中的操作arr.forEach(num->{int tmp = num+1;System.out.println(tmp);});
过滤器 stream().filter()

对容器中每个对象都进行过滤,如果filter( lambda条件)中的条件判断为true则保留,条件为false则丢弃。案例:提取容器中的奇数数字。

List<Integer> arr = Arrays.asList(4, 1, 25,3,6);
List<Integer> o = arr.stream().filter(num -> num % 2 == 1).collect(Collectors.toList());
System.out.println(o);

.collect(Collectors.toList() 表示重新转为List容器。

映射器 stream().map()

对容器中的每个对象都遍历,并对它在 map( lambda操作 ) 中进行一个Lambda表达式的操作,例子:每个数字变成自身的2倍(使用forEach也可以实现):

List<Integer> arr = Arrays.asList(4, 1, 25,3,6);
List<Integer> d = arr.stream().map(num -> 2 * num).collect(Collectors.toList());
System.out.println(d);
groupingBy 分组的使用

例子:将下面数组按照其字符串长度分组。

List<String> phones = Arrays.asList("huawei", "xiaomi", "vivo", "iphone","oppo", "laoluo", "oneplus");
Map<Integer, List<String>> map = phones.stream().collect(Collectors.groupingBy(String::length));
System.out.println(map);
综合练习题

最后来一道综合练习题,请先自己做,再看答案!
将一个字符串数组其中的字符串对应的奇数取出来,再转为整数类型,再排序
List list = Arrays.asList(“23”, “4”, “11”, “7”, “3”, “8”, “10”);
应该得到 [3, 7, 11, 23] .

List<Integer> res = list.stream().map(Integer::parseInt).filter(a -> a % 2 == 1).sorted().collect(Collectors.toList());
System.out.println(res);

以上就是 提高工作效率,但不能提高代码效率的常用Lambda表达式。对你有帮助的话帮忙一键三连,点赞-评论-关注!

http://www.15wanjia.com/news/35649.html

相关文章:

  • 公司主页和公司网站seo在线优化平台
  • 渭南网站建设推广百度资源搜索资源平台
  • 社交网站 设计如何百度推广
  • 做网站需要上门服务吗想要导航页面推广app
  • 营销网站建设新闻九江seo
  • 一手项目对接app平台seo编辑培训
  • 常见的网站开发软件有哪些苏州做网站的专业公司
  • 沈阳哪家公司网站做的好怎样搭建自己的网站
  • 建设网站导航新的数据新闻
  • 用asp做网站登录页面ip切换工具
  • 用discuz做商城网站上海的重大新闻
  • 深圳网络推广最新招聘360优化大师下载官网
  • 网站建设 意识形态网站买卖
  • 珠三角做网站适合成人参加的培训班
  • 宁波网站设计推广服务公司长沙网站推广合作
  • 男女做那个视频网站免费自拍百度网络营销中心
  • php动态网站开发原理电商运营
  • 成都 商业网站建设日照高端网站建设
  • 大丰网店制作抖音seo优化
  • 如何运行asp网站线上广告平台
  • 网络优化2年工资有多少网站seo链接购买
  • 企业加盟网站建设搜索引擎优化时营销关键词
  • 做唯品客网站的感想关键词搜索挖掘爱网站
  • 网站变灰css企点下载
  • 硅橡胶东莞网站建设广州seo网站排名
  • 两个男性做网站新闻发稿推广
  • 空间租用网站模板夸克搜索
  • 网络推广培训网站百度下载软件
  • 地方门户网站的前途营销策略方案
  • 工业设计公司网站如何建设最新推广注册app拿佣金