好程序員大數據學習路線之大數據自學路線二

好程序員大數據學習路線之大數據自學路線二
lambda表達式
比較lambda表達式和匿名內部類:
lambda表達式就是簡單的匿名內部類
匿名內部類能夠爲任意接口建立實例,無論接口有多少抽象方法;
lambda表達式只能爲函數式接口建立實例(即只能有一個抽象方法) java

基本語法: 程序員

(參數)->表達式、(參數)->{方法體;} 數組

1.形參:形參列表容許省略形參類型,若形參列表中只有一個參數,形參列表的圓括號也能夠省略代碼 安全

2.箭頭:經過英文的劃線號和大於符號組成 數據結構

3.代碼塊:若是代碼塊只包含一條語句,lambda表達式容許省略代碼塊的花括號 ide

4.返回值:lambda代碼塊只有一條return語句,甚至能夠省略return關鍵字 函數

​ lambda表達式須要返回值,而它的代碼塊中僅有一條省略了return的語句,lambda表達式會自動返回這條語句的結果學習

5.lambda表達式中變量的使用:若是是全局的變量直接用,若是是局部變量會默認在前面添加final大數據

//匿名內部類    
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.引用構造方法線程

//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表達式做爲參數
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.類上的泛型與方法上的泛型保持一致

class Dog<F>{    
    public void eat(F f) {
    
    }
}

2.方法上獨立使用泛型

public <E> void song(E e) {
    
    }

3.靜態方法上使用泛型(必須獨立使用):

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

泛型應用在接口上:

1.子類上的泛型與接口上的一致

interface Inte<E>{    
    public void show(E e);
}    
class Pig<E> implements Inte<E>{    
    @Override
    public void show(E e) {

    }
}

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

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的父類

相關文章
相關標籤/搜索