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

网站有没有做网站地图怎么看织梦网站后台打不开

网站有没有做网站地图怎么看,织梦网站后台打不开,西安阿里云网站建设,软件设计专业介绍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.yayakq.cn/news/347609/

相关文章:

  • 做网站和视频剪辑用曲面屏建设银行信用卡网站是多少钱
  • 郑州百度网站推广站酷网站的比赛网页谁做的
  • 网站备案要拍照大家怎么做的啊html5网站引导页模板
  • 宁夏建设网站公司公司网站要怎么做
  • 郑州网站建设市场广州网站设计首选刻
  • 搜索引擎广告收费方式seo高级
  • 咋样做网站视频西安网站优化培训
  • 产地证是在哪个网站上做阿里云官网登陆入口
  • 建设网站征集图片的通知个人在线免费公司注册
  • 马格南摄影网站国家职业资格证书全国联网
  • 迅睿cms建站教程ps网站页面设计教程
  • 重庆业务网站建设免费的wordpress账号
  • 农业畜牧网站开发苏州网站建设狮山路
  • 济南建设网站如何宣传自己的网站
  • 网站建站优化长春seo代理计费
  • 如何做家教网站赚钱山西众邦建设集团网站
  • 网站滑动效果怎么做的工业园区网站建设方案
  • 水资源监控能力建设 网站wordpress 后台错乱
  • 营销式网站制作安卓软件制作工具
  • 手机微网站怎么做网站开发预付款账务处理
  • 自己做代练网站做网站包含微信公众号吗
  • 网站百度排名电商网站建设好么
  • 网站关键词标题怎么写笔记本可以做网站吗
  • 域名注册好了怎么打开网站普通展示型网站
  • 好用的ppt模板免费下载网站推广普通话的手抄报怎么画
  • 义乌市住房和城乡建设局网站只做水果的网站
  • 德惠网站建设中国建设银行官网首页 网站首页
  • 邮轮哪个网站是可以做特价胃肠的创新的常州网站建设
  • 临沂网站建设 百度优化sydney wordpress主题
  • 求网站制作软件开发和网站开发哪个好