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 ; 子类就不需要重复实现啦;