[关闭]
@huangyichun 2017-05-03T20:24:14.000000Z 字数 1705 阅读 1170

Java8内置的四大核心函数式接口

Java8


  1. package java_8;
  2. import org.junit.Test;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.function.Consumer;
  7. import java.util.function.Predicate;
  8. import java.util.function.Supplier;
  9. import java.util.function.Function;
  10. /**
  11. * Java8内置的四大核心函数式接口
  12. * <p>
  13. * Consumer<T>: 消费型接口
  14. * void accept(T t);
  15. *
  16. * Supplier<T>:供给型接口
  17. * T get();
  18. *
  19. * Function<T, R>: 函数型接口
  20. * R apply(T t);
  21. *
  22. * Predicate<T>: 断言型接口:
  23. * boolean test(T t);
  24. *
  25. *Java8中还提供了其他函数式接口
  26. */
  27. public class TestLambda4 {
  28. //predicate<T> 断言型接口:
  29. @Test
  30. public void test4(){
  31. List<String> list = Arrays.asList("Hello","Lambda","Go","java");
  32. list = filterStr(list, s->s.contains("o"));
  33. list.forEach(System.out::println);
  34. }
  35. //需求:将满足条件的字符串添加到集合中
  36. public List<String> filterStr(List<String> list, Predicate<String> predicate) {
  37. List<String> stringList = new ArrayList<>();
  38. for (String str : list) {
  39. if (predicate.test(str))
  40. stringList.add(str);
  41. }
  42. return stringList;
  43. }
  44. //-----------------------------------------------------------
  45. //Function<T,R>函数型接口
  46. @Test
  47. public void test3() {
  48. String str = strHandler("huangyichun", s -> s.toUpperCase());
  49. System.out.println(str);
  50. }
  51. //需求用于处理字符串
  52. public String strHandler(String str, Function<String, String> fun) {
  53. return fun.apply(str);
  54. }
  55. //-------------------------------------------------
  56. //Supplier<T>供给型接口:
  57. @Test
  58. public void test2() {
  59. List<Integer> list = getNumList(10, () -> (int) (Math.random() * 100));
  60. list.forEach(System.out::println);
  61. }
  62. //需求:产生指定个整数,并放入集合中
  63. public List<Integer> getNumList(int num, Supplier<Integer> sup) {
  64. List<Integer> list = new ArrayList<>();
  65. for (int i = 0; i < num; i++) {
  66. list.add(sup.get());
  67. }
  68. return list;
  69. }
  70. //-----------------------------------------------------------
  71. //Consumer<T> 消费型接口
  72. @Test
  73. public void test1() {
  74. happy(10000, m -> System.out.println(m));
  75. }
  76. public void happy(double money, Consumer<Double> con) {
  77. con.accept(money);
  78. }
  79. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注