name type description
Consumer Consumer 接收T对象,不返回值
Predicate Predicate< T > 接收T对象并返回boolean

Consumer

说明:

  • 消费某个对象

接口定义:

  1. @FunctionalInterface
  2. public interface Consumer<T> {
  3. void accept(T t);
  4. default Consumer<T> andThen(Consumer<? super T> after) {}
  5. }

使用:

  • Iterable接口的forEach方法需要传入Consumer,大部分集合类都实现了该接口,用于返回Iterator对象进行迭代。
  • 定义两个接口并实现不同方式的打招呼
    • hi,~
    • hello,~
  • 方法内定义使用 ```java public static void main(String[] args) {

    1. /**
    2. * 参数name,传入名字,以hi的方式打招呼
    3. */
    4. Consumer<String> c1 = name -> {
    5. String format = MessageFormat.format("hi,{0}", name);
    6. System.out.println(format);
    7. };
    8. /**
    9. * 参数name,传入名字,以hi的方式打招呼
    10. */
    11. Consumer<String> c2 = name -> {
    12. String format = MessageFormat.format("hello,{0}", name);
    13. System.out.println(format);
    14. };
    15. // 调用执行
    16. c1.accept("Tony");
    17. c2.accept("Grace");

    }

输出—> hi,Tony hello,Grace

  1. - 定义方法
  2. ```java
  3. public static void main(String[] args) {
  4. sayHi().accept("Tony");
  5. sayHello().accept("Grace");
  6. }
  7. @NotNull
  8. private static Consumer<String> sayHello() {
  9. return name -> {
  10. String format = MessageFormat.format("hello,{0}", name);
  11. System.out.println(format);
  12. };
  13. }
  14. @NotNull
  15. private static Consumer<String> sayHi() {
  16. return name -> {
  17. String format = MessageFormat.format("hi,{0}", name);
  18. System.out.println(format);
  19. };
  20. }
  21. 输出-->
  22. hi,Tony
  23. hello,Grace
  • 以接口实现类的方式。判断是否是成年人 ```java public static void main(String[] args) { List personList = initPerson(); personList.forEach(new PersonHandle()); }

public static List initPerson() { List personList = new ArrayList<>(); personList.add(new Person(“a”, 12)); personList.add(new Person(“b”, 13)); personList.add(new Person(“c”, 14)); personList.add(new Person(“d”, 15)); personList.add(new Person(“e”, 45)); personList.add(new Person(“f”, 23)); personList.add(new Person(“g”, 31)); personList.add(new Person(“h”, 56)); personList.add(new Person(“i”, 78)); return personList; }

// 实现该接口 class PersonHandle implements Consumer {

  1. @Override
  2. public void accept(Person person) {
  3. if (person.getAge() >= 18) {
  4. System.out.println(person.getName() + ":成年人");
  5. } else {
  6. System.out.println(person.getName() + ":未成年人");
  7. }
  8. }

}

class Person {

  1. private String name;
  2. private Integer age;
  3. public Person(String name, Integer age) {
  4. this.name = name;
  5. this.age = age;
  6. }
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public Integer getAge() {
  14. return age;
  15. }
  16. public void setAge(Integer age) {
  17. this.age = age;
  18. }

} ```

Predicate

说明:
接口定义:
使用:

Predicate

说明:
接口定义:
使用:

Predicate

说明:
接口定义:
使用:

Predicate

说明:
接口定义:
使用:

Predicate

说明:
接口定义:
使用:

Predicate

说明:
接口定义:
使用:

Predicate

说明:
接口定义:
使用: