码迷,mamicode.com
首页 > 编程语言 > 详细

Java8 新特性

时间:2015-06-11 14:24:17      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

1. 接口可以有默认方法. 这样做是为了兼容性方面的考虑;例如java想在新版本中为集合类的接口添加一写新方法,如果不提供默认实现,则所有的子类都必须实现这些新方法.
但是, 不可以为Object的任何方法提供实现;

public default void forEach(Consumer<? super T> action) {
    Objects.requireNonNull(action); for (T t : this) {
        action.accept(t);
    }
}

2. Lambda 表达式.通过下面的例子看看Lambda怎么简化代码:

List<String> names = Arrays.asList("peter", "anna", "mike", "xenia");
Collections.sort(names, new Comparator<String>() {
    @Override
    public int compare(String a, String b) {
        return b.compareTo(a);
    }
});

Collections.sort(names, (String a, String b) -> {
    return b.compareTo(a);
});

Collections.sort(names, (String a, String b) -> b.compareTo(a));
//甚至可以没有类型 java会自己推倒类型
Collections.sort(names, (a, b) -> b.compareTo(a));

3. 函数式接口, 只包含一个抽象方法的接口称之为函数式接口;可以动态为函数式接口提供实现:@FunctionalInterface会使编译器作强化检查;

@FunctionalInterface
interface Converter<F, T> {
    T convert(F from);
}
Converter<String, Integer> converter = (from) -> Integer.valueOf(from);
Integer converted = converter.convert("123");
System.out.println(converted);    // 123

4. 增强的集合类方法:

Iterable.forEach(Consumer)
Iterator.forEach(Consumer)
Collection.removeAll(Predicate)
Collection.spliterator()
Collection.stream()
Collection.parallelStream()
List.sort(Comparator)
Map.forEach(BiConsumer)
Map.replaceAll(BiFunction)
Map.putIfAbsent(K, V)
Map.remove(Object, Object)
Map.replace(K, V, V)
Map.replace(K, V)
Map.computeIfAbsent(K, Function)
Map.computeIfPresent(K, BiFunction)
Map.compute(K, BiFunction)
Map.merge(K, V, BiFunction)
Map.getOrDefault(Object, V)

Java8 新特性

标签:

原文地址:http://www.cnblogs.com/sunxing007/p/4568792.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!