屌丝就爱尝鲜头——java8再判断

 这节,我们来通过具体的实例来看看Java8的具体用法。

  首当其冲,就是lambda用法。

  这里的案例,就是用lambda来实现runnable接口,我们知道以前用匿名内部类的方式来实现runnable接口,这种方法晦涩难懂,用lambda表达式实现以后,这样的代码清爽了不少。上两种对比的代码:

  public static void main(String[] args) {

        new Runnable() {
            public void run() {
               System.out.println("这是匿名内部类实现的runnable接口");
            }
        }.run();
        int i=0;
        Runnable runnable=()->{
            System.out.println("i="+i);
            System.out.println("aaaaaaaaaaaaaa");
        };
        runnable.run();
    }

 通过上述代码了,我们可以明明白白的看到这回事,lambda表达式中能够访问非静态的局部变量,这样,我们程序员们的代码是不是少写了很多,层次结构明了了很多。

   案例二,我们分别用匿名内部类和lambda表达式来实现接口中带参的方法,比较孰优孰劣。

  我们这里做一个接口叫IAction,分别让其实现,上代码:

package test;

public class TestInterface {

    public static void main(String[] args) {
        IAction iAction=new IAction() {

            @Override
            public void excute(String content) {
                // TODO Auto-generated method stub
                  System.out.println(content);
            }
        };
        iAction.excute("aaaa");
        IAction iAction2=(String content)->{
            System.out.println(content);
        };
        iAction2.excute("bbbb");
    }
   static interface IAction{
       void excute(String content);
   }

}

 根据上面的代码,我们得出来这样的总结:

  ①利用lambda表达式以后,代码编写的篇幅大量的减少。

  ②利用lambda表达式以后,不用显式进行方法名称的调用。

  ③利用lambda表达式以后,代码的层次感更加强烈明了。

  而Stream接口类似于一个什么了,一个泛型接口,使用户联合lambda表达式使其对数据集的操作更加的方便。下面,我通过一个对list操作的例子,老看看stream接口确实是为为集合操作带来了不少的好处。首先来一个people的实体类:

static class People{
        String name;
        int age;
        double height;
        public People(String name, int age, double height) {
            super();
            this.name = name;
            this.age = age;
            this.height = height;
        }
        @Override
        public String toString() {
            // TODO Auto-generated method stub
            return "People[ name="+name+",age="+age+",height="+height+"].";
        }

    }

然后来一个创建list集合的方法,源代码如下:  

static List<People> createPeople()
    {
        List<People> peoples=new ArrayList<People>();
        People people=new People("郑飞", 34, 1.99);
        peoples.add(people);
        people=new People("刘飞", 29, 1.89);
        peoples.add(people);
        people=new People("马飞", 24, 1.79);
        peoples.add(people);
        people=new People("王菲", 19, 1.69);
        peoples.add(people);
        return peoples;
    }

接着,来一个Stream接口,将其利用Foreach循环将其输出,源代码如下:

  public static void main(String[] args) {
         List<People> peoples=   createPeople();
         Stream<People> stream= peoples.stream();
         stream.forEach((e)->{System.out.println(e.toString());});
    }

  运行结果如下:

  

  可见,Stream接口作用有如下:

 

  流可以是无限的、有状态的,可以是顺序的,也可以是并行的。在使用流的时候,你首先需要从一些来源中获取一个流,执行一个或者多个中间操作,然后执行一个最终操作。中间操作包括filter、map、flatMap、peel、distinct、sorted、limit和substream。终止操作包括forEach、toArray、reduce、collect、min、max、count、anyMatch、allMatch、noneMatch、findFirst和findAny。 java.util.stream.Collectors是一个非常有用的实用类。该类实现了很多归约操作,例如将流转换成集合和聚合元素。 使其对集合操作更加灵活。

  说了这么多谓词操作,我这里用filter实例作为讲解。

  再上述的代码中,加上短短的一句代码,就ko了。

     stream=stream.filter(e->e.getAge()>20);

  可见了,有了这些操作的方法以后,操作集合也不需要你写过多的代码,就像sql一样,利用命令式语言来处理集合操作了。

   通过了,这些Java8的小案例,我们明白了,lambda表达式和Stream虽然是采用c2c(copy to C#)的方式,但是C#多年的经验确实告诉我们了,确实很好用,一切语言都是为了我们,使我们少写代码,提高相应的工作效率而奋斗。

时间: 2024-10-01 08:31:27

屌丝就爱尝鲜头——java8再判断的相关文章

屌丝就爱尝鲜头——java8总结晒一晒

前两节讨论了那么多,这节就是两个议题,讨论了新增的日期的api,再说一说我的Java8的一些心得体会了. 首先,我们必须要搞清楚Java 8 为什么要增加新的日期的api,这是由于老的日期api非常的繁琐,使用起来非常不方便,Java作者奉行这变者通不变者死的原则,于是增加了这些api.下面,我们总点介绍这几个类--LocalDate类.LocalTime类.LocalDateTime类.DateTimeFormatter类,zoneDate类.一个个来看: Ⅰ.LocalDate类--返回日期

屌丝就爱尝鲜头——java8初体验

Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分别是Java SE8.Java SE Emebbled 8.Java ME8. Java SE8较以往的系统增强的功能有: ①增强了对集合式操作语言--lambda表达式的支持,"Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演

我爱应用第3期:APP尝鲜者小米科技CEO雷军

雷军(微博)这次给我们带来了5款应用,看得出来雷军是一个APP尝鲜者,不论是刚刚推出不久的http://www.aliyun.com/zixun/aggregation/16442.html">Clear还是在国外非常深入人心的Evernote都获得了雷军的推荐. 以下为雷军推荐的5款应用: 1.工具类应用Evernote(下载) 推荐理由:我比较喜欢尝鲜,包里常常会有很多不同的手机.pad等等,而且经常更换.Evernote的多平台同步功能比较实用,简洁方便. 2.健康类应用Sports

华为借奇虎尝鲜互联网营销 周鸿祎出价太低无疾而终

高调合作,低调收场,华为借道奇虎360"尝鲜"互联网营销最后不得不无疾而终. "华为手机坚持精品路线,产品成本也因此偏高了些,做不到周鸿祎(奇虎360董事长)的更低价要求."华为终端董事长余承东在微博上感叹道. 9月6日,华为商场独力上架华为闪耀手机,这款定价为1499元,并被360高调宣传的手机最后安静地被放在商场的新品区.华为媒介负责人熊庆对<投资者报>记者表示,华为闪耀由华为独立营销,不属于360特供机范畴.而对于合作破裂的原因,华为并未回应,称华

微信小程序“满月”:尝鲜之后你还用过它吗?

距离2017年1月9日微信小程序上线,整整过去了一个月时间.和互联网时代每天出现的众多新鲜事物相似,小程序甫一诞生,立即占据了各大科技媒体网站头屏并引起社交圈的兴奋讨论.由于背靠微信,纷纷建起的小程序体验群迅速人数爆满,甚至有报道将其比作迄今"互联网史上最受追捧的'期货'". 这一现象很容易理解:毕竟拥有巨大用户基数,据2016年底微信团队公布的<2016微信数据报告>显示,微信平均日登录用户达7.68亿.所以微信稍有幅度的动作,都更容易激发市场想象,况且从以往表现来看,微

北京市4000用户“尝鲜”4G

记者昨日从北京移动了解到,该公司上月开始招募的体验用户,近日开始"尝鲜"更为快捷的4G网络.陆续有4000多名本市体验用户拿到申请的4G终端,开始为期6个月的测试体验. 3种4G设备开始测试 首批"尝鲜"的体验者市民古先生拿到手的是一个iPhone 5一半大小的白色设备,这个白色小机器就是可以将4G网络信号转换成手机.iPad.笔记本电脑都通用的WiFi信号的MiFi.据了解,此次北京移动向报名并被选中体验的市民开放的主要有3种4G终端,包括4G上网卡.4G无线网关

蟹“迟到”尝鲜宴泡汤

阳澄湖大闸蟹全面上市.今年,"蟹未到券先行"的场面让阳澄湖大闸蟹还未上市就已成为话题.记者了解到,虽然蟹券方便馈赠,但兑换起来可是麻烦多多. 蟹"迟到" 尝鲜宴被搅局 今年,中秋来得早,9月17日开湖的阳澄湖大闸蟹错过了中秋餐桌,所以早在大闸蟹上市之前一个月,各经销商便开始销售蟹券. 据华堂超市统计,从8月15日蟹券开卖到9月17日大闸蟹上市前,总计蟹券销量已破百万,相较于往年销量明显增长. 市民王女士在阳澄湖大闸蟹一上市,便第一时间打电话兑换蟹券.王女士介绍,原本

中国SaaS市场迥异海外:中小企业成最初尝鲜者

本文讲的是中国SaaS市场迥异海外:中小企业成最初尝鲜者,[IT168 资讯]金蝶友商网总经理冯颉对腾讯科技表示,国外SaaS(软件即服务)市场是从大客户开始的,但国内市场这并不是出发点,相反,中小企业对SaaS的服务需求成为一个趋势. 冯颉表示,目前友商网的注册用户已经接近20万,"目标客户群8成还是中小企业,员工在100人以下,以制造型和商贸为多,决策者是老板或会计人群.这是国内SaaS市场的现状.他们知道SaaS后,还会有几个月的从注册.使用到交流.培训的时间过程." "

视频“尝鲜”大数据:作用或被神化

"大数据",是今年最炙手可热的话题.美国视频网站Netflix豪赌1亿美元制作的连续剧<纸牌屋>也在这个概念下迅速走红,它的成功,让http://www.aliyun.com/zixun/aggregation/1728.html">国内视频网站也看到了"数据"的力量,开始试水,那么,大数据是否真的无所不能?国内会不会出现利用大数据算出的网络影视作品的成功案例? Netfilx"算"出<纸牌屋> Netfi