guava学习--FluentIterable
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的更多相关文章
- Guava学习笔记目录
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libra ...
- guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁
guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁 1,本文翻译自 http://eclipsesource.com/blogs/2012/06/06/cleaner-code- ...
- guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用
guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection ...
- Guava学习
Guava学习笔记目录 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concu ...
- [置顶] Guava学习之ArrayListMultimap
ArrayListMultimap类的继承关系如下图所示: Guava ArrayListMultimap List Multimap 是一个接口,继承自 Multimap 接口.ListMultim ...
- [置顶] Guava学习之Splitter
Splitter:在Guava官方的解释为:Extracts non-overlapping substrings from an input string, typically by recogni ...
- [置顶] Guava学习之Iterators
Iterators类提供了返回Iterator类型的对象或者对Iterator类型对象操作的方法.除了特别的说明,Iterators类中所有的方法都在Iterables类中有相应的基于Iterable ...
- [置顶] Guava学习之Lists
Lists类主要提供了对List类的子类构造以及操作的静态方法.在Lists类中支持构造ArrayList.LinkedList以及newCopyOnWriteArrayList对象的方法.其中提供了 ...
- [置顶] Guava学习之Immutable集合
Immutable中文意思就是不可变.那为什么需要构建一个不可变的对象?原因有以下几点: 在并发程序中,使用Immutable既保证线程安全性,也大大增强了并发时的效率(跟并发锁方式相比).尤其当一个 ...
随机推荐
- oracle often commands
还是这个好用 Oracle mysql 对比版本 Personal Oracle7 Release 7.3.4.0.0 mysql 3.23.58-nt 启动画面(点击放大) 默认安装目录 C:O ...
- Latex 学习
Latex 学习 @(05.2 Latex)[latex][基础教程] 这篇文章是关于latex基础教程.pdf的一个总结. 基本知识 基础 1. 空格 多个空格会被视为一个空格 单个回车会被视为一个 ...
- Groovy学习笔记(二)
在上一篇文章中我们主要学习了如何搭建Groovy开发环境,为我们的Groovy之旅做好了准备工作,不知道你是否准备好了?接下来我们就一起看看Groovy与我们熟悉的Java有什么异同. Groovy是 ...
- html5,表单
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 【实践】jQuery实现三联联动
网上看过很多关于联动的jq或js代码,最近班上的前端大神教了我一种比网上还简单的jq联动方法,自己琢磨过之后确实比其他方法更简单更简洁所以在这里分享一下 先上html代码 <div id=&qu ...
- android的listview的详细用法
listview是android开发中的一个极其重要的控件.所以,要学会android,如果这个不会,基本是不会android的. 这里按照几个步骤介绍这个控件的使用. 1. 使用API中ArrayA ...
- Deferred解决JS同步问题
测试脚本: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- lua 操作中文字符串之截取和长度竖排显示
前言 在游戏中,我们经常会遇到汉字的多行显示,比如名字竖行显示等.如下图: 为了实现上面的效果,lua实现分行是通过 \n 实现的,所以我们需要取出汉字,然后插入 \n 实现分行效果.还有一种就是 ...
- 一段处理百分数的js代码
function percent(s, e, i){ s = Number(s), isNaN(s) && (s = "0"); var n = "%&q ...
- NumberToChineseConverter.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...