掌握Java 8,从这10个实用案例学起:轻松上手Lambda表达式、Stream API等新特性

2026-07-21 0 阅读

Java 8的发布为Java开发者带来了许多新的特性和改进,其中最引人注目的包括Lambda表达式和Stream API。这些新特性使得Java编程更加简洁、高效,并且易于维护。以下,我们将通过10个实用案例,帮助您轻松上手Java 8的新特性。

案例一:Lambda表达式在集合操作中的应用

在Java 8之前,我们通常使用匿名内部类来实现接口或实现函数式接口。而Lambda表达式允许我们用更简洁的方式实现这些功能。

import java.util.Arrays;
import java.util.List;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Java", "C++", "Python", "JavaScript");

        // 使用Lambda表达式过滤出长度大于4的字符串
        list.stream().filter(s -> s.length() > 4).forEach(System.out::println);
    }
}

在这个例子中,我们使用Lambda表达式来过滤出长度大于4的字符串,并打印出来。

案例二:Stream API进行集合排序

Stream API提供了丰富的操作,比如排序、映射、过滤等。下面是一个使用Stream API对集合进行排序的例子。

import java.util.Arrays;
import java.util.List;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Java", "C++", "Python", "JavaScript");

        // 使用Stream API对集合进行排序
        list.stream().sorted().forEach(System.out::println);
    }
}

在这个例子中,我们使用Stream API对字符串集合进行排序,并打印出来。

案例三:Lambda表达式在多线程编程中的应用

Lambda表达式可以简化多线程编程,下面是一个使用Lambda表达式实现线程池的例子。

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class LambdaExample {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(3);

        // 使用Lambda表达式提交任务
        executor.submit(() -> System.out.println("Hello, World!"));
        executor.submit(() -> System.out.println("Hello, Lambda!"));
        executor.submit(() -> System.out.println("Hello, Java 8!"));

        // 关闭线程池
        executor.shutdown();
    }
}

在这个例子中,我们使用Lambda表达式提交了三个任务到线程池中,并打印出相应的信息。

案例四:Lambda表达式在事件监听中的应用

Lambda表达式可以简化事件监听器的编写,下面是一个使用Lambda表达式实现按钮点击事件的例子。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class LambdaExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Lambda Example");
        JButton button = new JButton("Click Me!");

        // 使用Lambda表达式设置按钮点击事件
        button.addActionListener(e -> System.out.println("Button clicked!"));

        frame.add(button);
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

在这个例子中,我们使用Lambda表达式为按钮设置点击事件,当按钮被点击时,会打印出相应的信息。

案例五:Stream API在数据处理中的应用

Stream API可以简化数据处理的过程,下面是一个使用Stream API对字符串集合进行处理的例子。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Java", "C++", "Python", "JavaScript");

        // 使用Stream API对字符串集合进行处理
        List<String> result = list.stream()
                                 .map(String::toUpperCase)
                                 .filter(s -> s.startsWith("J"))
                                 .collect(Collectors.toList());

        System.out.println(result);
    }
}

在这个例子中,我们使用Stream API对字符串集合进行处理,将所有字符串转换为大写,并过滤出以“J”开头的字符串。

案例六:Lambda表达式在集合遍历中的应用

Lambda表达式可以简化集合的遍历,下面是一个使用Lambda表达式遍历集合的例子。

import java.util.Arrays;
import java.util.List;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Java", "C++", "Python", "JavaScript");

        // 使用Lambda表达式遍历集合
        list.forEach(s -> System.out.println(s));
    }
}

在这个例子中,我们使用Lambda表达式遍历字符串集合,并打印出每个元素。

案例七:Stream API在文件处理中的应用

Stream API可以简化文件处理的过程,下面是一个使用Stream API读取文件内容的例子。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;

public class LambdaExample {
    public static void main(String[] args) {
        try (Stream<String> stream = Files.lines(Paths.get("example.txt"))) {
            stream.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个例子中,我们使用Stream API读取文件内容,并打印出来。

案例八:Lambda表达式在排序比较中的应用

Lambda表达式可以简化排序比较的过程,下面是一个使用Lambda表达式对字符串集合进行排序的例子。

import java.util.Arrays;
import java.util.List;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Java", "C++", "Python", "JavaScript");

        // 使用Lambda表达式对字符串集合进行排序
        list.sort((s1, s2) -> s1.length() - s2.length());

        System.out.println(list);
    }
}

在这个例子中,我们使用Lambda表达式对字符串集合进行排序,按照字符串长度进行排序。

案例九:Stream API在数据统计中的应用

Stream API可以简化数据统计的过程,下面是一个使用Stream API对字符串集合进行统计的例子。

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Java", "C++", "Python", "JavaScript", "Java", "Python");

        // 使用Stream API对字符串集合进行统计
        Map<String, Long> result = list.stream()
                                       .collect(Collectors.groupingByConcurrent(String::toString, Collectors.counting()));

        System.out.println(result);
    }
}

在这个例子中,我们使用Stream API对字符串集合进行统计,统计每个字符串出现的次数。

案例十:Lambda表达式在数据转换中的应用

Lambda表达式可以简化数据转换的过程,下面是一个使用Lambda表达式将字符串集合转换为整数集合的例子。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("1", "2", "3", "4", "5");

        // 使用Lambda表达式将字符串集合转换为整数集合
        List<Integer> result = list.stream()
                                   .map(Integer::parseInt)
                                   .collect(Collectors.toList());

        System.out.println(result);
    }
}

在这个例子中,我们使用Lambda表达式将字符串集合转换为整数集合,并打印出来。

通过以上10个实用案例,相信您已经对Java 8的新特性有了更深入的了解。希望这些案例能够帮助您轻松上手Lambda表达式、Stream API等新特性,让您的Java编程更加高效、简洁。

分享到: