public class FluentIterableTest {

public static void main(String[] args) {

Man man1 = new Man("Jack Miller", 18);

Man man11 = new Man("Jack Miller", 18);

Man man2 = new Man("Roy Miller", 18);

Man man3 = new Man("Lily Miller", 11);

Man man4 = new Man("Rose Miller", 5);

Man man5 = new Man("Mike Chen", 34);

List<Man> manList = ImmutableList.of(man1, man11, man2, man3, man4, man5);

Set<Man> mans =  FluentIterable.from(manList).toSet();

System.out.println(mans.size());

//转换

List<String> transformed = FluentIterable.from(manList).transform(new Function<Man, String>() {

@Override

public String apply(Man input) {

return Joiner.on('#').join(input.getName(), input.getAge());

}

}).toList();

System.out.println(transformed);

// 组合Predicate条件

Predicate<Man> predicate = Predicates.alwaysTrue();

predicate = Predicates.and(predicate, new NamePredicate("Chen"));

predicate = Predicates.and(predicate, new AgePredicate(15));

// 使用FluentIterable过滤元素,返回一个Iterable[]

Iterable<Man> manIterable = FluentIterable.from(manList).filter(predicate).limit(3)

.transform(new Function<Man, Man>() {

@Override

public Man apply(Man man) {

man.setAge(man.getAge() * 2);

return man;

}

});

System.out.println(manIterable);

}

}

class Man {

private String name;

private int age;

public Man(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public int getAge() {

return age;

}

public void setName(String name) {

this.name = name;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return name + " is " + age + " years old";

}

}

class AgePredicate implements Predicate<Man> {

private int minAge;

public AgePredicate(int minAge) {

this.minAge = minAge;

}

@Override

public boolean apply(Man man) {

if (man.getAge() < minAge)

return false;

return true;

}

}

class NamePredicate implements Predicate<Man> {

private String illegalName;

public NamePredicate(String illegalName) {

this.illegalName = illegalName;

}

@Override

public boolean apply(Man man) {

if (man.getName().contains(illegalName))

return false;

return true;

}

}

guava学习--FluentIterable的更多相关文章

  1. Guava学习笔记目录

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...

  2. guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁

    guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁 1,本文翻译自 http://eclipsesource.com/blogs/2012/06/06/cleaner-code- ...

  3. guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用

    guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection ...

  4. Guava学习

    Guava学习笔记目录 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concu ...

  5. [置顶] Guava学习之ArrayListMultimap

    ArrayListMultimap类的继承关系如下图所示: Guava ArrayListMultimap List Multimap 是一个接口,继承自 Multimap 接口.ListMultim ...

  6. [置顶] Guava学习之Splitter

    Splitter:在Guava官方的解释为:Extracts non-overlapping substrings from an input string, typically by recogni ...

  7. [置顶] Guava学习之Iterators

    Iterators类提供了返回Iterator类型的对象或者对Iterator类型对象操作的方法.除了特别的说明,Iterators类中所有的方法都在Iterables类中有相应的基于Iterable ...

  8. [置顶] Guava学习之Lists

    Lists类主要提供了对List类的子类构造以及操作的静态方法.在Lists类中支持构造ArrayList.LinkedList以及newCopyOnWriteArrayList对象的方法.其中提供了 ...

  9. [置顶] Guava学习之Immutable集合

    Immutable中文意思就是不可变.那为什么需要构建一个不可变的对象?原因有以下几点: 在并发程序中,使用Immutable既保证线程安全性,也大大增强了并发时的效率(跟并发锁方式相比).尤其当一个 ...

随机推荐

  1. cat *.txt | grep '>' | wc -l

    find the line where the '>' located, and make a statistic.

  2. OpenWrt——神奇的路由系统

    鉴于最近大家对这个系统比较感兴趣而且疑问很多所以本渣就整理下我对这个系统的理解和最实用的802.1x认证的理解.还望大家多多互相交流. 如果您时间紧张直接看最后的步骤,时间充裕的请仔细阅读,理解. O ...

  3. ELK修炼之道

    看了ELK大半年了,现在就慢慢的总结一下对ELK的理解 参考资料 ELK stack中文指南 Elasticsearch权威指南 官方文档 Elasticsearch基础篇 此篇用于介绍Elastic ...

  4. Xcode7编译打包后,iOS9设备无法打开http网址的问题

    在info.plist中添加一个节点: <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsAr ...

  5. HTML5新增元素、标签总结

    总是遇到h5新标签的笔试题目,就查阅了资料来总结一下: 1.form相关: (1)form属性:在HTML5中表单元素可放在表单之外,通过给该元素添加form属性来指向目标表单(form属性值设为目标 ...

  6. jenkins对结果进行断言问题

    TextFinder plugin插件 Jenkins在判定使用shell scripts完成build成功与否的时候,是根据shell最终的返回值是否为零来判定的:零即成功,非零即失败.这点判定事实 ...

  7. 什么是 HTML?

    前言 在 W3C(万维网联盟)官网里,有一套针对于初学者的 HTML 培训教程,为期四周.为了提升自己的翻译水平,同时帮助大家入门,我给大家翻译出来,以供参考. 1. 什么是 HTML HTML 是创 ...

  8. Java-String类的常用方法总结

    一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...

  9. Python namedtuple

    我们都知道Python中的tuple是一个非常高效的集合对象,但是我们只能通过索引的方式访问这个集合中的元素,比如下面的代码: Bob=('bob',30,'male') print'Represen ...

  10. Java开发中经典的小实例-(字符串比较)

    //输入字符串然后与自己定义的数组进行对比,并输出重复次数. public class Test11 {    public static void main(String[] args) {     ...