Рубрики
Без рубрики

Примеры функций Java 8

– Примеры функций Java 8

В Java 8 Функция является функциональным интерфейсом; она принимает аргумент (объект типа T) и возвращает объект (объект типа R). Аргумент и вывод могут быть другого типа.

@FunctionalInterface
public interface Function {

      R apply(T t);

}
  • T – Тип входа в функцию.
  • R – Тип результата функции.

1. Функция R> R>

1.1 В этом примере используется строка и возвращается длина строки в виде целого числа .

package com.mkyong;

import java.util.function.Function;

public class JavaMoney {

    public static void main(String[] args) {

        Function func = x -> x.length();

        Integer apply = func.apply("mkyong");   // 6

        System.out.println(apply);

    }

}

Выход

6

2. Цепная функция R> R>

2.1 Этот пример связывает Функцию с , а затем() .

package com.mkyong;

import java.util.function.Function;

public class Java8Function2 {

    public static void main(String[] args) {

        Function func = x -> x.length();

        Function func2 = x -> x * 2;

        Integer result = func.andThen(func2).apply("mkyong");   // 12

        System.out.println(result);

    }

}

Выход

12

3. Список -> Карта

3.1 Этот пример принимает Функция в качестве аргумента преобразуйте Список в Карту .

package com.mkyong;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;

public class Java8Function3 {

    public static void main(String[] args) {

        Java8Function3 obj = new Java8Function3();

        List list = Arrays.asList("node", "c++", "java", "javascript");

        // lambda
        Map map = obj.convertListToMap(list, x -> x.length());

        System.out.println(map);    // {node=4, c++=3, java=4, javascript=10}

        // method reference
        Map map2 = obj.convertListToMap(list, obj::getLength);

        System.out.println(map2);
    }

    public  Map convertListToMap(List list, Function func) {

        Map result = new HashMap<>();
        for (T t : list) {
            result.put(t, func.apply(t));
        }
        return result;

    }

    public Integer getLength(String str) {
        return str.length();
    }

}

Выход

{node=4, c++=3, java=4, javascript=10}
{node=4, c++=3, java=4, javascript=10}

4. Список -> Список

4.1 Этот пример принимает Функция в качестве аргумента преобразуйте Список строк в другой Список строк, который был хэширован с помощью SHA256.

package com.mkyong;

import org.apache.commons.codec.digest.DigestUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

public class Java8Function4 {

    public static void main(String[] args) {

        Java8Function4 obj = new Java8Function4();

        List list = Arrays.asList("node", "c++", "java", "javascript");

        // lambda
        //List result = obj.map(list, x -> obj.sha256(x));

        // method reference
        List result = obj.map(list, obj::sha256);

        result.forEach(System.out::println);

    }

    public  List map(List list, Function func) {

        List result = new ArrayList<>();
        for (T t : list) {
            result.add(func.apply(t));
        }
        return result;

    }

    // sha256 a string
    public String sha256(String str) {
        return DigestUtils.sha256Hex(str);
    }

}

Выход

545ea538461003efdc8c81c244531b003f6f26cfccf6c0073b3239fdedf49446
cedb1bac7efcd7db47e9f2f2250a7c832aba83b410dd85766e2aea6ec9321e51
38a0963a6364b09ad867aa9a66c6d009673c21e182015461da236ec361877f77
eda71746c01c3f465ffd02b6da15a6518e6fbc8f06f1ac525be193be5507069d

P.S То То находится от commons-кодек .


  commons-codec
  commons-codec
  1.14

Рекомендации

  • Функция JavaDoc
  • Java 8 Учебные пособия
  • Java 8 Примеры предикатов
  • Java 8 Примеры предикатов
  • Примеры потребителей Java 8
  • Java 8 Примеры потребителей

Оригинал: “https://mkyong.com/java8/java-8-function-examples/”