ITPub博客

首页 > 大数据 > 数据分析 > 好程序员大数据学习路线之大数据自学路线二

好程序员大数据学习路线之大数据自学路线二

原创 数据分析 作者:好程序员IT 时间:2019-09-18 10:39:02 0 删除 编辑

好程序员大数据学习路线之大数据自学路线二

lambda 表达式

比较lambda 表达式和匿名内部类:

lambda 表达式就是简单的匿名内部类

匿名内部类可以为任意接口创建实例,不管接口有多少抽象方法;

lambda 表达式只能为函数式接口创建实例(即只能有一个抽象方法)

 

基本语法:

 

( 参数 )-> 表达式、 ( 参数 )->{ 方法体 ;}

 

1. 形参:形参列表允许省略形参类型,若形参列表中只有一个参数,形参列表的圆括号也可以省略代码

 

2. 箭头:通过英文的划线号和大于符号组成

 

3. 代码块:如果代码块只包含一条语句, lambda 表达式允许省略代码块的花括号

 

4. 返回值: lambda 代码块只有一条 return 语句,甚至可以省略 return 关键字

 

lambda 表达式需要返回值,而它的代码块中仅有一条省略了 return 的语句, lambda 表达式会自动返回这条语句的结果

 

5.lambda 表达式中变量的使用:如果是全局的变量直接用,如果是局部变量会默认在前面添加 final

 

```java

// 匿名内部类

InterfaceA a = new InterfaceA() {

    public void show() {

        System.out.println(" 匿名内部类的 show");

    }

};

a.show();

// 通过 lambda 表达式

InterfaceA b = ()->{

    System.out.println("lambda 表达式的 show");

};

b.show();

// 简化

InterfaceA b1 = ()->System.out.println(" 简化的 lambda 表达式的 show");

b1.show();

```

 

方法引用与构造器引用

1. 引用类方法

2. 引用特定对象的实例方法

3. 引用某类对象的实例方法

4. 引用构造方法

 

```java

//1. 没有参数的

InterA aa = ()->System.out.println(" 没有参数 ");

//2. 一个参数的

InterB bb = (ib)->System.out.println(" 一个参数 :"+ib);

//3. 两个参数的

InterC cc = (ia,ib)->System.out.println(" 两个参数 :"+"ia:"+ia+"ib:"+ib);

//4. 返回值

InterD dd = (i,j)->i+j;

int value1 = dd.showD(4, 7);

//5.lambda 表达式作为参数

```

 

```java

public class Demo3 {

public static void main(String[] args) {

//

//

//

//

}

}

//* 1. 引用类方法

interface Converter{

// 将字符串转换成整数

Integer convert(String value);

}

class Test1{

public static void fun1() {

}

}

//* 2. 引用特定对象的实例方法

interface IA{

public void show(String message);

}

class A{

public void play(String i) {

}

}

class Test2{

public static void fun2() {

}

}

//* 3. 引用某类对象的实例方法

interface IB{

String subString(String string,int stat,int end);

}

class Test3{

public static void fun3() {

}

}

//* 4. 引用构造方法

interface IC{

Object show(String name,int age);

}

class Person{

String name;

int age;

public Person(String name, int age) {

}

@Override

public String toString() {

}

}

class Test4{

public static void fun4() {

}

}

```

集合

可以存储不同类型的多个数据,只能存储引用数据类型,动态分配内存

Collection :接口

添加:boolean add(Object o); 、 boolean addAll(Collection<?> c);

删除:boolean remove(Object o); 、 boolean removeAll(Collection<?> c); 、

判断:boolean contains(Object o); 、 boolean contains(Collection<?> c);

获取:Iterator<E> iterator();

集合变数组:Object toArray();

 

List :接口:

有序的(存储有序),可重复的

 

底层数据结构是数组,线程不安全,特点:查找速度快,添加删除慢

底层数据结构是数组,线程安全,特点:查找速度快,添加删除慢

底层数据结构是链表,线程不安全,特点:查找速度慢,添加删除快

 

Set :接口:

 

无序的,不可重复的

底层是哈希表,线程不安全

底层是二叉树,线程不安全

Map :接口

HashMap : DAY07 笔记 2019-07-30

TreeMap : DAY07 笔记 2019-07-30

 

泛型

通过< 数据类型 > 接受一种数据类型

1. 减少容错处理,简化代码

2. 将运行错误提前到编译阶段

泛型应用在方法上:

1. 类上的泛型与方法上的泛型保持一致

```java

class Dog<F>{

public void eat(F f) {

}

}

```

2. 方法上独立使用泛型

```java

public <E> void song(E e) {

}

```

 

3. 静态方法上使用泛型(必须独立使用):

```java

public static <W> void show(W w) {}

```

泛型应用在接口上:

 

1. 子类上的泛型与接口上的一致

 

```java

interface Inte<E>{

public void show(E e);

}

class Pig<E> implements Inte<E>{

@Override

public void show(E e) {

 

}

}

```

2. 接口上使用泛型 , 子类上不用泛型

 

```java

interface Inte<E>{

public void show(E e);

}

class Bird implements Inte<String>{

public void show(String e) {};

}

```

1. 如果是重写的方法 , 泛型与接口一致

2. 如果是子类自己的方法 , 可以与接口一致 , 也可以有自己的泛型

 

限制上限和限制下限

限制上限<? extends E> : E 以及 E 的子类

限制上限<? super E> : E 以及 E 的父类

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913892/viewspace-2657352/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
欢迎关注公众号:好程序员特训营 web前端教程分享 723729549 大数据教程分享 703503210

注册时间:2019-03-20

  • 博文量
    539
  • 访问量
    410788