Java8常用新特性实践

2022-08-09 14:39:35 浏览数 (1)

前言:

  时下Oracle开速迭代的Java社区以即将推出Java10,但尴尬的是不少小中企业仍使用JDK7甚至JDK6开发。

  从上面列出的JDK8特性中我们可以发现Java8的部分特性很明显的是从Scala借鉴过来,其设计目的只要是为了让代码更精简同时使代码可读性更高。本人在实际项目中比较常用的是3个新特性

1) forEach()

2) stream()

3) Interface动态创建

以下demo已经过本人亲测,现提供给有需要的朋友!

代码语言:javascript复制
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
 * Java8常用新特性测试
 * @author John
 * @date 2018-04-14 21:54
 *
 */
public class Java8NewFeature {
    public static void main(String[] args) {
        System.out.println("*** forEach()新特性 ***");
        showForeach();
        System.out.println("*** stream()新特性 ***");
        showStream();
        System.out.println("*** Interface动态创建新特性 ***");
        showEasyInterface();
    }

    public static void showForeach() {
        Integer numbers[] = { 1, 33, 5 };
        List<Integer> numbersList = Arrays.asList(numbers);
        numbersList.forEach(System.out::println);

    }

    public static void showStream() {
        Integer numbers[] = { 1, 33, 5, 100, 2 };
        List<Integer> numbersList = Arrays.asList(numbers);
        List<String> newNumbers = numbersList.stream()
                .filter(num -> (num % 2 == 1)).map(num -> ""   num)
                .collect(Collectors.toList());
        newNumbers.forEach(System.out::println);

        int sum = numbersList.stream().reduce((a, b) -> (a   b)).get();
        System.out.println("sum = "   sum);
    }

    public static void showEasyInterface() {
        Integer numbers[] = { 1, 33, 5 };
        List<Integer> numbersList = Arrays.asList(numbers);
        Collections.sort(numbersList, (a, b) -> (b - a));
        numbersList.forEach(System.out::println);
        
        // JDK7实现自定义排序
//        Collections.sort(numbersList,new Comparator<Integer>() {
//
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                // TODO Auto-generated method stub
//                return o2 - o1;
//            }
//            
//        });
    }
}

 == 测试输出结果 ==

代码语言:javascript复制
*** forEach()新特性 ***
1
33
5
*** stream()新特性 ***
1
33
5
sum = 141
*** Interface动态创建新特性 ***
1
5
33

0 人点赞