函数式接口,Stream流

it2025-02-14  26

jdk中函数式接口

Consumer<T> // 消费型 Function<T,R> // 函数式 Supplier<T> // 供给型接口 Predicate<T> // 断定式,返回boolen Function<String, String> function = str->{return str;}; String s = function.apply("你好啊"); System.out.println("我是返回值---" + s); Predicate<String> predicate = str ->{ return str.isEmpty(); }; System.out.println(predicate.test("")); # 只有get方法 Supplier supplier = ()->{return 1204;}; System.out.println(supplier.get()); Consumer consumer = (str)->{ System.out.println(str); }; consumer.accept("我是哈哈");

Stream流

public static void main(String[] args) { User u1 = new User(1, 12, "a"); User u2 = new User(2, 22, "b"); User u3 = new User(3, 32, "c"); User u4 = new User(4, 42, "d"); User u5 = new User(5, 52, "e"); User u6 = new User(6, 62, "f"); /** * 题目要求:一分钟内完成此题,只能用一行代码实现! * 现在有5个用户!筛选: * 1、ID必须是偶数 * 2、年龄必须大于23岁 * 3、用户名转为大写字母 * 4、用户名字母倒着排序 * 5、只输出一个用户! **/ List<User> list = Arrays.asList(u1, u2, u3, u4, u5, u6); list.stream().filter((u)->{return u.getId() % 2 == 0;}) .filter((u)->{return u.getAge() > 23;}) .map((u -> {return u.getName().toUpperCase();})) .sorted((uu1,uu2)->{return uu2.compareTo(uu1);}) .limit(1) .forEach(System.out::println); }

使用Stream流做计算

long start = System.currentTimeMillis(); long sum = LongStream.rangeClosed(0L, 10_0000_0000).parallel().reduce(0, Long::sum); long end = System.currentTimeMillis(); System.out.println(sum+"总共花了这么多时间----"+(end-start)); # 总共的时间大概是300-400毫秒之间,还是比较快了
最新回复(0)