2025.8.20随笔
ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>());

java的语法糖机制可以确定new出来的对象是ArrayList<>()是ArrayList<String>,java中可以直接传递泛型,确定泛型,同时hutool的这个方法也认可这个机制

// 1. 定义一个方法,它的参数是一个“函数”(实际上是函数式接口对象)
public static List<String> filterStrings(List<String> list, Predicate<String> predicate) {
    List<String> result = new ArrayList<>();
    for (String s : list) {
        if (predicate.test(s)) { // 这里调用传入的“行为”进行判断
            result.add(s);
        }
    }
    return result;
}

public static void main(String[] args) {
    List<String> names = Arrays.asList("Alice", "Bob", "David", "Charlie");

    // 2. 调用这个方法,并直接传入一个Lambda表达式作为“判断逻辑”
    // 这个Lambda就是 Predicate<String> 类型的参数

    // 过滤出长度大于4的名字
    List<String> longNames = filterStrings(names, (String s) -> s.length() > 4);
    System.out.println(longNames); // [Alice, David, Charlie]

    // 过滤出以"A"开头的名字 (另一个不同的“行为”)
    List<String> startWithA = filterStrings(names, s -> s.startsWith("A"));
    System.out.println(startWithA); // [Alice]
}

Lambda 表达式是依据函数式接口快速创建的匿名实现类实例。它本质上是一个对象,但因为其唯一的目的就是实现那个抽象方法,所以我们可以忽略其“对象”的外壳,而直接关注其“函数”的行为。这使得我们可以将代码(行为)作为一种轻量级的数据进行存储和传递,极大地提升了Java语言的表达力,尤其是在集合操作和异步编程中。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇