java8 学习记录
一。 lambda表达式
参考 https://www.cnblogs.com/franson-2016/p/5593080.html
package com.mytest.java8; import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collectors; /**
* @author zhangc
* @since 2019/1/25 10:39
* java 双冒号
* 用法: 遍历, 匿名内部类
* java stream
* filter 可以过滤内容
* limit 可以限制条数
* sort 可以帮助排序
* min,max 最大最小,类似比较
* map 可以指定处理如String转int ,或者指定要用的字段如Person::age
* collect 收集信息,如把一个list 用逗号关联
* summaryStatistics 可以统计一组数字:最大最小平均总和等
**/
public class Colon {
public static void main(String[] args) {
List<String> a1 = Arrays.asList("a","b","c","d");
a1.forEach(x -> printValur(x)); Consumer<String> consumer = Colon::printValur;
a1.forEach(x -> consumer.accept(x)); a1.forEach(System.out::println); new Thread(new Runnable() {
@Override
public void run() {
System.out.println("run");
}
}).start(); new Thread(()->{
System.out.println("run");
System.out.println("run1");
}).start(); // ()-> 相当于new+方法参数 和 方法实现 String[] pl = new String[]{"fds","fds","121","1211111","1233","dkk"};
//Arrays.sort(pl,(String x,String x1)->(x.compareTo(x1)));
//Arrays.asList(pl).forEach(x-> System.out.println(x));
Arrays.sort(pl,Comparable::compareTo);
Arrays.asList(pl).forEach(x-> System.out.println("张"+x));
Predicate<String> p1 = (p)->p.length()<5;
Arrays.asList(pl).stream().filter(p1).limit(3).forEach(x-> System.out.println("filter"+x)); String[] p2 = new String[]{"fds","fds","121","1211111","1233","dkk"};
Arrays.asList(p2).stream().sorted(Comparable::compareTo).forEach(x->System.out.println("so"+x));
String dou = Arrays.asList(p2).stream().sorted(Comparable::compareTo).map(String::toString).collect(Collectors.joining(","));
System.out.println(dou); List<Integer> sta = Arrays.asList(1,2,3,4,5);
IntSummaryStatistics ins = sta.stream().mapToInt((x)->x).summaryStatistics();
System.out.println(ins.getAverage() + ":" + ins.getCount() +":" + ins.getSum()+":"+ins.getMax()); } public static void printValur(String str) {
System.out.println("print value : " + str);
}
}
二: 接口新加 默认方法和静态方法
public interface IterA{
/**
* 好好的接口为什么要加个默认方法呢(你是不是也有这个疑问,网上只说java8新增了哪些功能不说为什么的,送个呵呵给他们)?
* 网上查了下: 1. 如果我有很多类实现了这个接口,那么我想往这个接口加个方法,岂不是所有实现类都要改一下,想想就不美好啊。(可是我有个疑问,接口不就是这个功能吗:抽象定义,实现类必须实现。)
* 2. 写一些默认方法,实现类就可以直接用或者选择复写。 so, 这不是继承吗?表示要疯了
* 忽然看到网上说实现接口A 和接口B ,如果A 和 B 有同样的方法,则实现类需要复写该方法。 那如果有不同的方法呢,那是不是说A B 的默认方法都可以被实现类使用。原来如此:这是多继承啊。。
* 整了半天 这是java 通过接口的方式 变相的支持了多继承(但是注意静态方法是不会被继承的,还是老老实实用接口.静态方法调用)。
*/ default void aa(){ } static void sm(){
System.out.println("12");
} }
3. 双冒号方法引用
如 ClassA::new 含义就是 new ClassA()
ClassA::methodA 含义是 调用 ClassA.mothedA() 如何mothedA 不是静态方法,那就是调用实例的方法
classA:methodA 就是调用 calssA.methodA();
注意这种方式 只能是在 支持lambda 的地方使用。如 forEach( 这里使用)。
4. 元空间: 替代永久代,不在虚拟机中。
java8 学习记录的更多相关文章
- Java8学习笔记----Lambda表达式 (转)
Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...
- java后端学习记录2019
学习计划 2019年计划 1.学习计算机基础,并加以实践.包括LeetCode刷题.数据库原理(索引和锁.Sql优化等).网络协议(Http.Tcp).操作系统(加深Linux).<Http权威 ...
- Solr学习记录:Getting started
目录 Solr学习记录:Getting started 1.Solr Tutorial 2. A Quick Overview Solr学习记录:Getting started 本教程使用环境:jav ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
- UWP学习记录11-设计和UI
UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...
- UWP学习记录10-设计和UI之控件和模式7
UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...
随机推荐
- python time 和 datetime模块
time模块 时间相关的操作,时间有三种表示方式: 时间戳 1970年1月1日之后的秒,即:time.time() 格式化的字符串 2014-11-11 11:11, ...
- 在虚拟机上的ubuntu 1.6 系统中sudo apt-get失败的问题
在虚拟机上sudo apt-get update 失败.可能是网络dns问题,把nameserver \设为你路由器的内网ip地址就没事了; 详细: 1/打开sudo gedit /etc/resol ...
- 嵌入式linux——时钟(三)
今天写第一篇,S3C2440的时钟,配置好时钟系统,各个模块才能正常有效的工作,为了了解始终系统,必须要阅读芯片手册,尽量看英文版的,这样还能捎带着增加一下阅读英语计数文档的能力. 概览 在2440数 ...
- Javascript 京东轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- eclipse 构建 jpa project 所需的用户库(vendor: EclipseLink)
Eclipse 构建 JPA Project 时,需要指定 JPA的实现,如:下图中的EclipseLink 2.7.3,这其实是一个自定义的用户库. 看看,这个用户库包含persistence接口和 ...
- Lombok使用简介
1.在maven中加入Lombok引入 2.在开发环境中加入Lombok插件 3.在实体类的类名上增加注释@Date即可使用所有get,set方法
- Docker 容器操作命令
容器是镜像的一个运行实例,镜像是静态的只读文件,而容器带有运行时需要的可写文件层.如果认为虚拟机是模拟运行的一整套操作系统(包括内核.应用运行态环境和其他系统环境)和跑在上面的应用,那么Docker容 ...
- cxgrid主从表的从表数据小于主表总数的问题
当从表的数据移动需要和数据源记录同步时,会发生一现象:从表中设定的keyfield记录不连续,显示就会中断. 这样要设置从表的排序,按照主表的关联键在内存表里进行排序 indexFieldNames设 ...
- MySql:SELECT 语句(四)通配符的使用
1. LIKE 操作符 要在搜索子句中使用通配符,必须要使用 LIKE 操作符. 1)百分号通配符 最常用的通配符是百分号(%). % 表示任何字符出现的任意次数.但是 NULL 除外.可以匹配 0 ...
- Linux网络编程学习(九) ----- 消息队列(第四章)
1.System V IPC System V中引入的几种新的进程间通信方式,消息队列,信号量和共享内存,统称为System V IPC,其具体实例在内核中是以对象的形式出现的,称为IPC 对象,每个 ...