java8的写法

java8 的写法

lambda表达式

String[] atp = {"Rafael Nadal", "Novak Djokovic",
                "Stanislas Wawrinka",
                "David Ferrer","Roger Federer",
                "Andy Murray","Tomas Berdych",
                "Juan Martin Del Potro"};
List<String> players =  Arrays.asList(atp);

// 以前的循环方式
for (String player : players) {
    System.out.print(player + "; ");
}

// 使用 lambda 表达式以及函数操作(functional operation)
//        参数 + 表达式
players.forEach((player) -> System.out.print(player + "; "));
// 在 Java 8 中使用双冒号操作符(double colon operator)
players.forEach(System.out::println);

循环

  List<RapServicecatalog> rapServicecatalogList = rapServicecatalogMapper.selectByExample(rapServicecatalogExample);
        List<TreeNode> treeNodeList =   new ArrayList<> () ;

        rapServicecatalogList.forEach(servicecatalog  ->{
            TreeNode temp=   new TreeNode();
            temp.setId(servicecatalog.getId());
            temp.setLabel(servicecatalog.getName());
            treeNodeList.add(temp);
        });

泛型

Java泛型中的标记符含义:

E - Element (在集合中使用,因为集合中存放的是元素)

T - Type(Java 类)

K - Key(键)

V - Value(值)

N - Number(数值类型)

? - 表示不确定的java类型

S、U、V - 2nd、3rd、4th types

Object跟这些标记符代表的java类型有啥区别呢?

Object是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T、E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换。

函数式编程

Serializable序列化接口

private static final long serialVersionUID = 1L; 作为一个标识,让jvm来帮助对类进行序列化;

序列化之后,可以进行传输和存储; 一般 entity 实体;和 vo 前端传给后端需要序列化;

技巧:可以在基础类,父类上implement serializable ; 子类就不需要重复实现啦;