В 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) { Functionfunc = 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) { Functionfunc = 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(); Listlist = 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(); Listlist = 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/”