继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Guava集合:使用Iterators简化Iterator操作

汪汪一只猫
关注TA
已关注
手记 570
粉丝 129
获赞 718

Iterators是Guava中对Iterator迭代器操作的帮助类,这个类提供了很多有用的方法来简化Iterator的操作。

1. 判断迭代器中的元素是否都满足某个条件 all 方法

        List<String> list = Lists.newArrayList("Apple","Pear","Peach","Banana");        Predicate<String> condition = new Predicate<String>() {            @Override            public boolean apply(String input) {                return ((String)input).startsWith("P");            }        };        boolean allIsStartsWithP = Iterators.all(list.iterator(), condition);        System.out.println("all result == " + allIsStartsWithP);

all方法的第一个参数是Iterator,第二个参数是Predicate<String>的实现,这个方法的意义是不需要我们自己去写while循环了,他的内部实现中帮我们做了循环,把循环体中的条件判断抽象出来了。

2. 通过any判断迭代器中是否有一个满足条件的记录,any方法的参数和all方法一样,就不再具体举例了

3. get方法获得迭代器中的第x个元素

        String secondElement = Iterators.get(list.iterator(), 1);

4. filter方法过滤符合条件的项

        Iterator<String> startPElements = Iterators.filter(list.iterator(), new Predicate<String>() {            @Override            public boolean apply(String input) {                return input.startsWith("P");            }        });

filter方法的第一个参数是源迭代器,第二个参数是Predicate的实现,其apply方法会返回当前元素是否符合条件。

5. find方法返回符合条件的第一个元素

        String length5Element = Iterators.find(list.iterator(), new Predicate<String>() {            @Override            public boolean apply(String input) {                return input.length() == 5;            }        });

6. transform方法,对迭代器元素做转换

        Iterator<Integer> countIterator = Iterators.transform(list.iterator(), new Function<String, Integer>() {            @Override            public Integer apply(String input) {                return input.length();            }        });

上面的例子中我们将字符串转换成了其长度,transform方法输出的是另外一个Iterator.

原文链接:http://outofmemory.cn/java/guava/Collections/Iterators

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP