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源码探秘:用户函数的执行过程
脚本函数编译后如何执行?脚本编译后是pyc码,pycodeobject对象的串行化.import时是对pyc文件反系列化.函数编译后会生成函数对象,函数对象的TP_call对应的是function_c ...
- C# 构造函数中base和this的使用。
使用base时,首先给父类中的构造函数赋值. 使用this时,先调用父类无参构造函数,再调用自身其他构造函数并对其赋值,最后调用自身当前构造函数.
- angualrjs添加ngTouch
angularjs没有touch时间需要添加directive 插件代码如下 "use strict"; angular.module("ngTouch", [ ...
- [原创]如果软件在网络磁盘中或移动磁盘中运行时需要解决 exception C0000006 异常问题
//如果软件在网络磁盘中或移动磁盘中运行时需要利用下面这句命令来解决 exception C0000006 异常问题 {$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FRO ...
- install virtual enviroment on windows
H:\>pip install virtualenv --install virtualenvCollecting virtualenv Downloading https://files.p ...
- C语言典型编程1
关于C的一些小而精的编程,适合希望提升编程能力的初学者学习:关键编程也就几句,但思维可以迁移到其他编程语言.同一问题,算法多种 //阶乘运算(有多种编写方式,编程需要看懂,更要打出来)#include ...
- Loadrunner进行HTTPS协议性能测试
1.最简单办法就是在脚本前面加上:web_set_sockets_option("SSL_VERSION","TLS"),一般能解决HTTPS协议的请求问题,无 ...
- Java内存的 静态方法和实例方法的区别及使用场景
注意:变量指基本数据类型非对象,局部变量不能被静态修饰 1.(静态)成员变量存放在data segment区(数据区),字符串常量也存放在该区 2.非静态变量,new出来的对象存放在堆内存,所有局部变 ...
- js 解析url
以前解析uri都是去找网上的代码,用起来不怎么顺手,刚好自己前段时间做项目的时候需要用到,于是就自己写了一个,欢迎个位提出宝贵意见. getUrlParam (name) { //解析url var ...
- 20175314 《Java程序设计》第九周学习总结
20175314 <Java程序设计>第九周学习总结 教材学习内容总结 根据课本的介绍下载了MySQL和Navicat for MySQL并成功对后者进行破解 MySQL客户端管理工具(如 ...