Java Magazine lambad表达式示例代码

Code listings for "Using Java 8 Lambda Expressions, Part 2," Java Magazine, March/April 2013

[Listing 1]
public default void sort(Comparator<? super E> c) {
    Collections.<E>sort(this, c);
}

[Listing 2]
List<String> myStrings = getSomeStrings();
String search = getSearchString();
System.out.println(myStrings.stream().filter(s -> s.equals(search)).into(new ArrayList<>()));

[Listing 3]
        stream()   filter()   map()   into()
Collection -> Stream -> Stream -> Stream -> Collection

[Listing 4]
public interface Stream<T> extends BaseStream<T> {
    Stream<T> filter(Predicate<? super T> predicate);
    <R> Stream<R> map(Function<? super T, ? extends R> mapper);
}

[Listing 5]
Set<Otter> ots = getOtters();
System.out.println(ots.stream()
                      .filter(o -> !o.isWild())
                      .map(o -> o.getKeeper())
                      .filter(k -> k.isFemale())
                      .into(new ArrayList<>())
                      .size());

[Listing 6]
Set<Otter> ots = getOtters();
Keeper kate = new Keeper(Gender.F);
Keeper bob = new Keeper(Gender.M);
Otter splash = new Otter(Gender.F);
splash.incAge();
splash.setKeeper(kate);
ots.add(splash);

double aveAge = ((double) ots.stream().map(o -> o.getAge()).reduce(0, (x, y) -> {return x + y;} )) / ots.size();
System.out.println("Average age: "+ aveAge);

[Listing 7]
ots.stream()
   .filter(o -> !o.isWild())
   .filter(o -> o.getKeeper().equals(kate))
   .forEach(o -> o.setKeeper(bob));

Copyright 2013 Oracle Corporation

 来自java magazine 2013 四月

简单说下

增加了一个Stream

可以把 集合变为Stream处理(有点类似Iterator)

filter是过滤当前流得到符合条件的对象的流

map是以表达式中返回的对象作为新的流(以上o -> o.getKeeper() 得到的就是Keeper的流)

forEach 按字面意思理解 就是每个流内的对象执行表达式内的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值