`

拥抱Java8第一弹

    博客分类:
  • java
阅读更多
package creative.air.java8.common;

import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.IntStream;

/**
 * A First Taste for JDK8
 * Created by feuyeux@gmail.com
 * Date: Jan 16 2014
 * Time: 2:02 PM
 */
public class FirstApp {

    @FunctionalInterface
    public interface Task {
        void run();

        /*1. given default method in functional interface(or a SAM type)*/
        default void cancel() {
        }
    }

    public static void schedule(Task task) {
        task.run();
    }

    public static void main(String[] args) {
        /*2. Lambda Expressions for anonymous class*/
        {
            /*
            schedule(new Task() {
                @Override
                public void run() {
                    System.out.println("Hello world!");
                }
            });
            */
            schedule(() -> {
                System.out.println("Hello world!");
            });
        }
        List<String> versions = Arrays.asList("JDK7", "JDK8");
         /*3. method reference :: 126 Lambda Expressions & Virtual Extension Methods*/
        {
            /*
            versions.sort(new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    return o2.compareTo(o1);
                }
            });
            */
            /*
            versions.sort((o1, o2) -> o1.compareTo(o2));
            */
            Comparator<? super String> comparator = String::compareTo;
            versions.sort(comparator);
            System.out.println("JDK versions:" + versions);
        }

        /*4. 107 Bulk Data Operations for Collections*/
        {
            /*
            versions.parallelStream().filter(
              s -> s.equals("JDK8")
            ).map(
              s -> "Develop in " + s + " with Pleasure!"
            ).forEach(
              System.out::println
            );
            */
            Predicate<? super String> predicate = s -> s.equals("JDK8");
            versions.parallelStream().filter(predicate).map(
              s -> String.format("Develop in %s with Pleasure!", s)
            ).forEach(
              System.out::println
            );

            IntStream range = IntStream.range(101, 150);
            range.parallel().filter(i -> i % 10 == 0).sequential().forEach(System.out::println);
        }

        /*JSR 310*/
        {
            Period period = Period.between(LocalDate.parse("1979-03-03"), LocalDate.now());
            System.out.printf("my age is:%d%n", period.getYears());

            System.out.printf("Touch JSR310 %s.%n", LocalDate.of(2014, 1, 16));

            LocalDate bjDate = LocalDate.of(2004, 8, 26);
            System.out.println(bjDate.plus(9, ChronoUnit.YEARS)
              .plus(6, ChronoUnit.MONTHS)
              .plus(5, ChronoUnit.DAYS).format(DateTimeFormatter.ofPattern("E MM/dd/yyyy")));
        }
    }
}

 

2
1
分享到:
评论
7 楼 marshan 2014-01-22  
我这里只是抛砖引玉 希望多多交流哈
6 楼 satuo20 2014-01-18  
总觉得java不应该出现类似'->'这样的操作符,太不人性化了,而且可可读性也会变得很差。除非是能换来高性能。
5 楼 bitray 2014-01-18  
panda0001 写道
这还是java吗

你可以认为是代码的内聚性和封装性更高了。跟过去的匿名内部类很像的
4 楼 sootv 2014-01-18  
我怎么感觉好乱
3 楼 panda0001 2014-01-17  
这还是java吗
2 楼 alvin198761 2014-01-17  
java 7都没有搞定,java 8就来了
1 楼 white_crucifix 2014-01-17  
看上去很好玩哎,好想玩一下,java越来越与时俱进了

相关推荐

    超清晰:解析极限编程 拥抱变化 第2版

    超清晰:解析极限编程 拥抱变化 第2版,绝对物有所值,一共25章。

    ADT 24.0.2兼容 java 1.8

    标题提到的"ADT 24.0.2兼容java 1.8"意味着这个版本的ADT已经更新,能够与Java 1.8(也称为Java 8)版本无缝配合,这在当时是一个重要的进步,因为Java 8引入了许多新的特性和优化。 Java 1.8是Java语言的一个重大...

    java开发规范拥抱易读代码

    【Java开发规范】Java编程语言的开发规范是提高代码质量、可读性和团队协作效率的重要准则。本规范主要涵盖以下几个方面: 1. **命名风格**: - **命名规则**:命名不能以下划线或美元符号开头或结束,避免使用...

    与Java相关的四十个响亮的名字

    它在业界引起了轰动,许多顶级公司开始拥抱Java,并将它应用到各自的项目中去。 随着Java技术的不断成熟,Java 2 Enterprise Edition(J2EE)应运而生。J2EE为企业级应用提供了一个标准的平台,作为数据库与Web应用...

    关于JAVA技术的现状及其发展方向的研究.pdf

    此外,Java也在积极拥抱云计算和大数据技术,提供更多的API和工具支持,以适应现代软件开发的需求。 总的来说,Java作为一种成熟的编程语言,在保持其稳定性的同时,也在不断地吸纳新技术,创新自身的技术体系,以...

    第一个适用于 Java 的 REST API 框架.zip

    Restlet 框架 概述Restlet Framework 于 2005 年启动,是 Java 世界中第一个拥抱 REST 的开源项目。自诞生以来,其 Java API 就与 REST 架构风格以及 HTTP 协议的概念和术语紧密匹配。它包括强大的动态路由和安全...

    [] - 2022-10-08 微软全力拥抱 Java!.pdf

    互联网资讯,技术简介,IT、AI技术,人工智能

    最后一个拥抱精选.doc

    6. 爱情与陪伴:从“请给我最后一个拥抱”可以看出,离别时的拥抱象征着安慰、力量和勇气,是对过去美好时光的告别,也是对新旅程的祝福。爱情在这里不仅是浪漫的,更是一种支持和鼓励。 7. 友谊的持久:尽管毕业...

    Java MD5加密工具类(支持多参数输入)

    深入内核,此工具类严选Java的MessageDigest作为驱动引擎,确保每一次加密都遵循严格的MD5算法标准。128位的哈希值输出,如同为原始数据穿上了一层坚不可摧的铠甲,无论是对抗数据篡改还是信息泄露,都游刃有余。在...

    Java OOP编程思想学习之我见

    Java作为一种强大的编程语言,其设计初衷之一就是全面拥抱OOP理念,这不仅体现在语言结构上,更体现在其对软件工程实践的影响上。 #### 封装(Encapsulation) 封装是OOP的核心概念之一,它指的是将数据和操作这些...

    java简单界面的ATM程序.rar

    这个标题表明我们正在讨论一个使用Java编程语言实现的自动取款机(ATM)模拟程序。在Java中,开发这样的界面程序通常涉及Swing或JavaFX库来创建图形用户界面(GUI)。ATM程序可能包括模拟存款、取款、查询余额、转账...

    JAVA面试题80页.rar

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它的设计理念是“一次编写,到处运行”,这意味着编写好的Java代码可以在任何支持Java的平台上运行,无需重新...

    JAVA编程规则总结

    8. **为维护者编写程序** 在编写程序时应考虑到未来的维护需求,无论是由自己还是其他人维护。良好的编程实践包括编写清晰、易懂且有良好注释的代码,以便未来能够轻松理解和修改。 9. **最少意外原则** 程序...

    java 程序员必看的15本书(书名介绍)

    同时,《解析极限编程 拥抱变化》(Kent Beck的XP第二版)是敏捷开发的必读书籍,而《统一软件开发过程》(UP)虽然与敏捷相悖,但其对文档和流程的重视也是不容忽视的。Scott Ambler的《敏捷建模》则提供了将敏捷与...

    麦肯锡睁大眼睛拥抱AI一代(英).pdf

    【麦肯锡】睁大眼睛拥抱AI一代(英).pdf【麦肯锡】睁大眼睛拥抱AI一代(英).pdf【麦肯锡】睁大眼睛拥抱AI一代(英).pdf【麦肯锡】睁大眼睛拥抱AI一代(英).pdf【麦肯锡】睁大眼睛拥抱AI一代(英).pdf【麦肯锡】...

    Java Magazine NovDec 2017.pdf

    Servlet 4.0作为Java Servlet API的一个重大新版本,拥抱了HTTP/2协议,并对未来可能的资源需求进行了预期。Servlet 4.0的主要目的是提高开发效率,简化应用部署,并优化性能。它在原有的基础上引入了一些新特性,...

    java应用和实践

    此外,Java还积极拥抱现代软件开发模式,如DevOps和持续集成/持续部署(CI/CD),以适应快速变化的市场需求。 综上所述,Java不仅是一种强大的编程语言,更是一套完整的生态系统,涵盖了从企业级应用到移动开发、大...

    java程序设计教程

    Java语言的出现,得益于C和C++语言的发展,它继承了两者的特点,同时克服了它们的一些不足,完全拥抱面向对象的编程理念,成为互联网应用的标准之一,引领了技术变革。 1. **Java语言的起源和发展** - **历史背景...

    java面试题.txt.rar

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。为了在激烈的竞争中脱颖而出,Java开发者需要对语言有深入的理解,并且能够应对各种面试挑战。"java面试题.txt"这个压缩包文件很可能包含...

    java版本图书管理系统.rar

    本系统的标题“java版本图书管理系统.rar”表明我们探讨的是一个用Java语言实现的图书管理系统。这个系统可能是为了帮助图书馆进行图书的入库、出库、借阅、归还等日常管理工作而设计的。本文将围绕Java技术栈在图书...

Global site tag (gtag.js) - Google Analytics