java 8-lambada操作配列、集合

3875 ワード

概要
         “Lamban表現」は匿名関数であり、Lamda表現は数学に基づくものである。λ演算に名前がついています。直接にその中のlambastractionの抽象に対応しています。匿名関数名がない関数です。Lamban表現はクローズド(数学的伝統的意味との違いに注意)を表すことができる。
基本語句
Runnable noArguments = () -> System.out.println("Hello World"); 
ActionListener oneArgument = event -> System.out.println("button clicked"); 
Runnable multiStatement = () -> { 
    System.out.print("Hello");
    System.out.println(" World");
};
BinaryOperator add = (x, y) -> x + y; q
BinaryOperator addExplicit = (Long x, Long y) -> x + y; 
書き込みスレッド
Runnable runnable = () -> {
    System.out.println("Lambda     ");
};
Thread thread = new Thread(runnable);
thread.start();
Lambanを使って演算する
BinaryOperator add = (x, y) -> x + y;

Integer x = add.apply(20, 30);
統計配列中の要素の出現個数
String name[] = {"  ", "  ", "  ", "  ", "  ", "  ", "  ", "  "};
long num = Arrays.stream(name).filter(x -> x.equals("  ")).count();
配列をリセットしてセットメモリに変換します。
String name[] = {"  ", "  ", "  ", "  ", "  ", "  ", "  ", "  "};
List stringList = Arrays.stream(name).filter(x -> !x.equals("  ")).collect(toList());

配列は重さを取り、要素には拡張子を付けます。
String name[] = {"  ", "  ", "  ", "  ", "  ", "  ", "  ", "  "};
List stringList2 = Arrays.stream(name).filter(x -> !x.equals("  ")).map(y -> y + "   :").collect(toList());
行列の和
        int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7, 8, 9, 10 };
        int count = 0;
        // for  
        for (int i = 0; i < a.length; i++) {
            count += a[i];
        }
        // foreach
        count = 0;
        for (int i = 0; i < a.length; i++) {
            count += a[i];
        }
        // Lambda
        int num = Arrays.stream(a).reduce(0, (b, c) -> b + c);
ラボンダ  の抽出対象フィールドを参照してください。
class User{

    private String username;
    private int age;

    public User(){}

    public User(String username, int age) {
        this.username = username;
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

List userList = asList(new User("  " , 10) , new User("  " , 10) , new User("  " , 13));
String result = userList.stream().map(User::getUsername).collect(Collectors.joining("," , "[" , "]"));
出力結果:[張三、李四、王五]
ラボンダ  グループBy
        List userList = asList(new User("  " , 10) , new User("  " , 10) , new User("  " , 13));
        Stream userStream = userList.stream();
        Map> integerStringMap = userStream.collect(groupingBy(user->user.getAge() , mapping(User::getUsername , toList())));
        System.out.println(integerStringMap.toString());
 
  
 
  
输出结果:{10=[张三, 李四], 13=[王五]}
String result2 =
                userList.stream().map(User::getUsername)
                        .reduce(new StringJoiner(",1 ", "[", "]"),
                                StringJoiner::add,
                                StringJoiner::merge)
                        .toString();
System.out.println(result2);
出力結果:[張三、1李四、1王五]