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. Java tomcat启动失败(Servlet3.0 Web Project):A child container failed during start

    Tomcat启动失败,失败全部信息: 五月 , :: 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetProper ...

  2. 学习OpenCV——绘制彩色直方图(HSV2BGR)

    #include <cv.h> #include <highgui.h> #include <iostream> using namespace std; int ...

  3. node与Elment以及子节点childrenNode与children的区别(2)

    测试代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  4. PL301 matrix内部模块

    ASIB中的valid信号,有两部分,一部分add产生的地址映射,到main中的default addr.(vect) 一部分由Dmu和Cdas组成,到main中的build. Dmu:interco ...

  5. ifconfig

    虚拟机启动后发现ifconfig命令下,没有打印ip .用ifconfig eth0 up命令开启下网卡. #ifconfig eth0 up .更改eth0配置: #vi/etc/sysconfig ...

  6. 【转】MarshalAs属性和使用

    转载地址:http://blog.sina.com.cn/s/blog_4e4ee8ed0100elou.html [MarshalAs(UnmanagedType.ByValArray, SizeC ...

  7. angularJS ng-grid 配置

    以下是按我的需求修改的 简单的demo  可以自己扩展 HTML: <!DOCTYPE html> <html class="no-js" ng-app=&quo ...

  8. node.js报错总结

    1. Error: EISDIR, read 这个报错是目标不应该是文件夹,而是其他类型,本错误出现在使用fs.createReadStream()里参数传递了个文件夹,但是应该传递个文件. 参考地址 ...

  9. ajax 代码

    function ajax(){ var aj=null; if(window.ActiveXObject){ aj = new ActiveXObject("Microsoft.XMLHT ...

  10. if,else语句的运用

    1.求解一元二次方程 Console.WriteLine("求解一元二次方程:a*x*x+b*x+c=0"); Console.Write("请输入 a="); ...