ビッグデータビッグデータは、二つの良いプログラマの自己学習コースのコースを学習します
ラムダ式の
比較ラムダ式と匿名内部クラスを:
ラムダ式は、単純に匿名内部クラスです
匿名の内部クラスは、どんなに抽象メソッド・インターフェース、任意のインターフェイスのインスタンスを作成することができません。
ラムダ式は、関数インタフェースのインスタンスを作成することができる(すなわち、唯一の抽象メソッドがあります)
基本的な構文:
(パラメータ) - > 式、(パラメータ) - > { メソッド本体;}
1. パラメーター:唯一つのパラメータ、括弧内のパラメータリストは、コードでは省略されてもよい場合は、パラメータリストは、パラメータタイプパラメータリストを省略することができ
2. 矢印:数値をスクライブにより、英語のシンボルよりも大きく、
3. コードブロック:コードブロックが一つだけのステートメントが含まれている場合は、ラムダ式はコードブロックは中括弧を省略していることができ
4. 戻り値:ラムダブロック一つだけのリターンの文にも省略することがリターンキーワード
ラムダ式の戻り値が必要とされ、それが唯一のコードのブロックが省略されているリターン文を、ラムダ式は自動的に結果の声明を返します
5.lambda 表現変数を使用します。それはローカル変数の場合、グローバル変数は直接、フロントにデフォルト設定されます場合は、最終的な
`` `javaの
// 匿名内部クラス
InterfaceA aは=新しいInterfaceA(){
公共ボイドショー(){
System.out.println(「匿名内部クラスが表示さ」);
}
}。
ショー();
// によってラムダ式を
InterfaceAのB =() - > {
System.out.println( "ラムダ式が表示さ");
}。
b.show();
// 簡素化
InterfaceA B1 =() - >のSystem.out.println ( " 簡略化されたラムダ式が表示")。
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的父类