泛型

List List;//这里是尖括号的类型

Java 泛型是 JDK 5 中引入的一个新特性,它提供了编译时类型安全检测机制,允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数1

不能是基本类型

  1. Consumer(消费者)

    Consumer 是一个函数式接口,它接收一个参数并且没有返回值。

    在 Java 中,你可以使用 Consumer 来执行一些操作,例如遍历集合并对每个元素执行某些操作。下面是一个示例:

    import java.util.ArrayList;
    import java.util.List;
    import java.util.function.Consumer;

    public class ConsumerExample {
    public static void main(String[] args) {
    List<String> names = new ArrayList<>();
    names.add("Alice");
    names.add("Bob");
    names.add("Charlie");

    // 使用 Consumer 遍历并打印每个名字
    Consumer<String> printName = name -> System.out.println("Hello, " + name);
    names.forEach(printName);
    }
    }
  2. Supplier(提供者)

    Supplier 是一个函数式接口,它不接收参数但返回一个值。

    你可以使用 Supplier 来生成一些值,例如随机数、默认配置等。下面是一个示例:

    import java.util.function.Supplier;

    public class SupplierExample {
    public static void main(String[] args) {
    // 使用 Supplier 生成一个随机整数
    Supplier<Integer> randomIntSupplier = () -> (int) (Math.random() * 100);
    int randomInt = randomIntSupplier.get();
    System.out.println("随机整数:" + randomInt);
    }
    }
  3. Predicate(谓词,绝断)

    Predicate 是一个函数式接口,它接收一个参数并返回一个布尔值。

    你可以使用 Predicate 来进行条件判断,例如筛选集合中满足某个条件的元素。下面是一个示例:

    import java.util.function.Predicate;

    public class PredicateExample {
    public static void main(String[] args) {
    // 使用 Predicate 判断是否为偶数
    Predicate<Integer> isEven = num -> num % 2 == 0;
    System.out.println("Is 5 even? " + isEven.test(5));
    System.out.println("Is 10 even? " + isEven.test(10));
    }
    }
  4. Function(函数)

    Function 是一个函数式接口,它接收一个参数并返回一个值。

    你可以使用 Function 来执行一些转换操作,例如将一个类型的值转换为另一个类型。下面是一个示例:

    import java.util.function.Function;

    public class FunctionExample {
    public static void main(String[] args) {
    // 使用 Function 将字符串转换为大写
    Function<String, String> toUpperCase = str -> str.toUpperCase();
    System.out.println(toUpperCase.apply("hello"));
    }
    }
  5. Bi(二元运算)

    这个概念通常用于描述操作的参数个数。Bi 表示二元运算,需要两个参数,例如a+b

  6. Unary(一元运算)

    Unary 表示一元运算,只需要一个参数,例如自增或自减操作(i++,i–)。

    类型名称中有基本类型,弥补泛型接口

    不能用基本类型的不足

  7. To( 转化)

    T 的含义是 to,表示 “到” 或 “转换为” 的意思。在这些接口的上下文中,“To” 表示这些函数的返回类型。例如,ToIntFunction 接口表示一个函数,它接受一个参数并返回一个 int 类型的结果

  8. BiConsumer

    只是接收两个参数,并没有返回值,例如遍历集合并对每个元素执行某些操作

    // 创建一个BiConsumer接口的实例,该接口接受两个String类型的输入参数s1和s2
    BiConsumer<String, String> biConsumer= (s1, s2) -> {
    // 输出这两个参数,中间用空格隔开
    System.out.println(s1 + " " + s2);
    };

    // 调用biConsumer的accept方法,传入"李东"和"是大聪明"作为参数
    biConsumer.accept("李东","是大聪明");
  9. BiFunction

    接口表示一个接收两个参数并产生一个结果的函数。

    // 创建一个BiFunction接口的实例,该接口接受两个Integer类型的输入参数a和b,并返回它们的和
    BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;

    // 调用add的apply方法,传入1和2作为参数,然后输出它们的和
    System.out.println(add.apply(1,2));

  10. asd

  11. asd