- 浏览: 7936097 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
在之前的博文中介绍了guava强大的filter和transform,能转变各类东西,下面继续深入学习下,废话少说:
1) 将string转换为enum:
在guava 16中,可以将string转换为enum,
其中可以使用stringConverter的方法,
2 第2个应用场景,就是可以对一些对象进行转换,比如从一个对象转换到另外一个对象,如假设有两个对象:
可以看到,假如要把数据库中获得的记录中的LIST中的各个对象,一次过进行变换复制,更改其中某些值的话,用这个方法就最好了;
如转换一个对象,容易办:
ETradeInvestment faceBookInvestment = tdToEtradeFunction
.apply(new TdAmeritradeInvestment(555, "Facebook Inc", 57.51));
3 把list转为MAP,其中要用到guava中map的工具类了
1) 将string转换为enum:
在guava 16中,可以将string转换为enum,
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; }
其中可以使用stringConverter的方法,
@Test public void transform_string_to_enum () { List<String> days = Lists.newArrayList( "WEDNESDAY", "SUNDAY", "MONDAY", "WEDNESDAY"); Function<String, Day> stringToDayEnum = Enums.stringConverter(Day.class); Iterable<Day> daysAsEnum = Iterables.transform(days, stringToDayEnum); for (Day day : daysAsEnum) { System.out.println(day); } }
2 第2个应用场景,就是可以对一些对象进行转换,比如从一个对象转换到另外一个对象,如假设有两个对象:
public class ETradeInvestment { private String key; private String name; private BigDecimal price; ... } public class TdAmeritradeInvestment { private int investmentKey; private String investmentName; private double investmentPrice; ... }
@Test public void convert_tdinvestment_etradeinvestment () { List<TdAmeritradeInvestment> tdInvestments = Lists.newArrayList(); tdInvestments.add(new TdAmeritradeInvestment(555, "Facebook Inc", 57.51)); tdInvestments.add(new TdAmeritradeInvestment(123, "Micron Technology, Inc.", 21.29)); tdInvestments.add(new TdAmeritradeInvestment(456, "Ford Motor Company", 15.31)); tdInvestments.add(new TdAmeritradeInvestment(236, "Sirius XM Holdings Inc", 3.60)); Function<TdAmeritradeInvestment, ETradeInvestment> tdToEtradeFunction = new Function<TdAmeritradeInvestment, ETradeInvestment>() { public ETradeInvestment apply(TdAmeritradeInvestment input) { ETradeInvestment investment = new ETradeInvestment(); investment.setKey(Ints.stringConverter().reverse() .convert(input.getInvestmentKey())); investment.setName(input.getInvestmentName()); investment.setPrice(new BigDecimal(input.getInvestmentPrice())); return investment; } }; List<ETradeInvestment> etradeInvestments = Lists.transform(tdInvestments, tdToEtradeFunction); System.out.println(etradeInvestments); }
可以看到,假如要把数据库中获得的记录中的LIST中的各个对象,一次过进行变换复制,更改其中某些值的话,用这个方法就最好了;
如转换一个对象,容易办:
ETradeInvestment faceBookInvestment = tdToEtradeFunction
.apply(new TdAmeritradeInvestment(555, "Facebook Inc", 57.51));
3 把list转为MAP,其中要用到guava中map的工具类了
@Test public void transform_list_to_map () { List<TdAmeritradeInvestment> tdInvestments = Lists.newArrayList(); tdInvestments.add(new TdAmeritradeInvestment(555, "Facebook Inc", 57.51)); tdInvestments.add(new TdAmeritradeInvestment(123, "Micron Technology, Inc.", 21.29)); tdInvestments.add(new TdAmeritradeInvestment(456, "Ford Motor Company", 15.31)); tdInvestments.add(new TdAmeritradeInvestment(236, "Sirius XM Holdings Inc", 3.60)); ImmutableMap<Integer, TdAmeritradeInvestment> investmentMap = Maps .uniqueIndex(tdInvestments, new Function<TdAmeritradeInvestment, Integer>() { public Integer apply(TdAmeritradeInvestment input) { return new Integer(input.getInvestmentKey()); } }); System.out.println(investmentMap); }
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1566方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 2017前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3463info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2231import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 489https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 683public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 606https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 668https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 432https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 5381 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3095微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 612https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1842什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 962本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1359原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 856public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 668在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 936-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 767一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1903介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
首先,Guava的Cache组件是其核心特性之一,它提供了一种高效、自动化的缓存机制。定时缓存功能允许我们存储计算结果或从远程服务获取的数据,并在预设的时间间隔后自动过期,以确保数据的时效性。这在处理频繁但计算...
7. **检查类**:Preconditions、Objects等类提供了参数检查和对象验证功能,有助于防止程序中的错误。 8. **随机数生成**:Guava的Randomness类提供了更安全、更可控的随机数生成器。 9. **时间处理**:Guava提供...
├─Google Guava 第06讲-Guava之函数式接口(非常类似Java8,熟悉的可以不看).wmv ├─Google Guava 第07讲-Guava之StopWatch和JDK之ServiceLoader讲解.wmv ├─Google Guava 第08讲-Guava之Files讲解(废话比较多)...
Guava是Google推出的一个强大的Java工具包,其中的Multiset、Multimap和GroupingBy等功能提供了高级的集合操作,特别是对于集合的分组功能,它提供了一种高效且灵活的方式。 首先,我们需要理解Guava中的`...
`guava-18.0.jar`是Guava库的编译后的二进制版本,包含了所有Guava类和方法的字节码,开发者可以直接在项目中引用这个JAR文件来使用Guava的功能。Guava 18.0版本包含了大量实用工具,例如: 1. **集合框架扩展**:...
guava
Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,极大地丰富了标准库的功能。在Java开发中,Guava库被广泛使用,因为它包含了大量的集合框架、并发支持、缓存机制、字符串处理、I/O操作等多个...
guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档...
这个“guava.jar”文件就是包含了所有这些功能的归档包。 Guava的集合框架扩展了Java内置的集合类,如List、Set和Map,提供了更强大的功能。例如,它包含Multiset(多集合)和Multimap(多映射)这样的数据结构,...
Guava是Google开发的一个Java库,它包含许多Google核心库使用的功能,如集合、缓存、并发库、原生类型支持、字符串处理、I/O等。这个压缩包包含的是Guava的不同版本,分别是guava-2.6.2.jar、guava-18.0.jar、guava-...
Google Guava是一个比较有趣的框架,它提供了很多有趣的的功能, google Guava 给开发者提供了如下常用功能: 集合(collections) 缓存(caching) 原生的类型支持(primitives support) 并发类库(concurrency ...
4. 生成`hashCode()`和`equals()`:在类定义内,使用Eclipse的代码生成功能(通常快捷键是`Alt + Shift + S`,然后选择`Generate hashCode() and equals()`),选择Guava插件提供的选项。 5. 自动格式化:生成的...
通过源码,开发者可以看到Guava是如何实现各种高级数据结构、集合操作、并发工具、缓存策略等复杂功能的。 Guava 21.0版本引入了许多新特性与改进,包括但不限于: - **新功能**: 添加了新的数据结构和算法,例如...
Guava 支持函数式编程风格,包括 Function 接口,可以将一个对象转换为另一个对象,以及 Predicates,用于创建可重用的条件检查。 5. **字符串处理** Guava 提供了有用的字符串工具,如 Joiner 和 Splitter,用于...
Guava集合框架是其核心功能之一,提供了很多增强型的集合类,如Multiset(多频数集合)、Multimap(多值映射)、ImmutableList(不可变列表)、ImmutableSet(不可变集合)和ImmutableMap(不可变映射),这些集合在...
赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:guava-17.0.pom; 包含翻译后的API文档:guava-17.0-javadoc-API文档-中文...
赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:guava-23.0.pom; 包含翻译后的API文档:guava-23.0-javadoc-API文档-中文...
2. **缓存机制**:Guava提供了强大的本地缓存功能,允许开发者方便地创建和管理缓存,以提高应用程序的性能,同时支持基于引用或时间的自动过期策略。 3. **原生类型支持**:Guava提供了对基本类型的强类型集合,如...
Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...
Guava还包含了一些其他实用功能,如事件总线(EventBus)用于解耦组件间的通信,RangeSet用于处理有序值的集合,Optional类用于表示可能为空的值,避免空指针异常。 总的来说,Google Guava库是一个功能强大的Java...