美文网首页
通过IntelliJ IDEA 2016.3 来更好使用Java

通过IntelliJ IDEA 2016.3 来更好使用Java

作者: faunjoe | 来源:发表于2018-06-14 14:03 被阅读0次

    本文展示了IntelliJ IDEA如何帮助编写正确的和培养使用Java 8的习惯.版本使用IntelliJ IDEA 2016.3, 通过扩展了IDEA现有的检查以支持这些的案例。

    现在,如果在上面定义的局部变量的循环递增中单击Alt + Enter,IDE将提示您使用以count()结尾的一系列steam的链式 API调用来替换它。 注意,

    如果循环是嵌套的,IDE将使用flatMap():

    123.gif
    private static int withPrefix(List<Set<String>> nested, String prefix) {
            int count = 0;
            for (Set<String> element : nested) {
                if (element != null) {
                    for (String str : element) {
                        if (str.startsWith(prefix)) {
                            count++;
                        }
                    }
                }
            }
            return count;
        }
    
        private static int withPrefix1(List<Set<String>> nested, String prefix) {
            return (int) nested.stream()
                    .filter(Objects::nonNull)
                    .flatMap(Collection::stream)
                    .filter(str -> str.startsWith(prefix))
                    .count();
        }
    

    如果变量从另一个方法返回的数字增加,IDE将使用mapToInt()/ mapToLong()/ mapToDouble():

    123.gif
    private static int withPrefix2(List<Set<String>> nested, String prefix) {
            int count = 0;
            for (Set<String> element : nested) {
                if (element != null) {
                    for (String str : element) {
                        if (str.startsWith(prefix)) {
                            count += str.length();
                        }
                    }
                }
            }
            return count;
        }
    
        private static int withPrefix3(List<Set<String>> nested, String prefix) {
            int sum = nested.stream()
                    .filter(Objects::nonNull)
                    .flatMap(Collection::stream)
                    .filter(str -> str.startsWith(prefix))
                    .mapToInt(String::length)
                    .sum();
            return sum;
        }
    

    如果循环将非原始对象添加到集合中,而不是递增变量,IDE将用以collect()结尾的调用链替换它:

    123.gif
    private static List<String> flatten(String[][] arr) {
            List<String> result = new ArrayList<>();
            for (String[] subStr : arr) {
                if (subStr != null) {
                    for (String str : subStr) {
                        result.add(str);
                    }
                }
            }
            return result;
        }
    
        private static List<String> flatten1(String[][] arr) {
            List<String> result = Arrays.stream(arr)
                    .filter(Objects::nonNull)
                    .flatMap(Arrays::stream)
                    .collect(Collectors.toList());
    
            return result;
        }
    

    如果要添加到集合的对象是另一种方法的结果,IDE将使用map()以惯用的方式处理它:

    相关文章

      网友评论

          本文标题:通过IntelliJ IDEA 2016.3 来更好使用Java

          本文链接:https://www.haomeiwen.com/subject/sscseftx.html