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;
}
}
相关文章
- 从0学习WebLogic CVE-2020-2551漏洞
- 传智播客c/c++公开课学习笔记--Linux网络流媒体服务器的核心代码揭秘
- Coursera台大机器学习课程笔记4 -- Training versus Testing
- jsp学习--如何定位错误和JSP和Servlet的比较
- 前端学习 -- Css -- 伪元素
- android 5.0新特性学习--Drawable Tinting(为图片资源着色)
- android 5.0新特性学习--CardView
- 学习模块地址--待更新
- java struts2入门学习--OGNL语言常用符号和常用标签学习
- jsp学习--基本语法和基础知识
- 【学习总结】网络-应用层-网络应用模型
- 【学习总结】SQL语:limit -- 取n条
- 机器学习笔记 - 探索性数据分析(EDA) 概念理解
- Atiitt 自我学习法流程 1.预先阶段 1.1.目标搜索 资料搜索 1.2. 1.3.通过关联关键词 抽象 等领域 拓展拓宽体系树 1.4. 2.分析整理阶段 2.1.找出重点 压缩要学会
- Pytorch深度学习实战(1)—— 使用LSTM 自动编码器进行时间序列异常检测
- guava学习--Preconditions
- guava学习--FutureFallback
- guava学习--monitor
- guava学习--File1
- guava学习--集合1
- TPM零知识学习九 —— tpm全安装流程复盘(上)
- 第九章 linux-深入学习字符设备驱动编程①
- Django学习17 -- ManytoManyField
- FDR错误发现率-P值校正学习[转载]
- 【文献学习】Deep Learning for Signal Demodulation in PhysicalLayer Wireless Communications
- Python学习笔记之洗牌顺牌
- 强化学习笔记:多臂老虎机问题(7)--Gradient Bandit Algorithm
- Elasticsearch原理学习--为什么Elasticsearch/Lucene检索可以比MySQL快
- QEMU零知识学习2 —— QEMU源码下载