`

Guava小结之 转变对象的强悍功能

 
阅读更多
   在之前的博文中介绍了guava强大的filter和transform,能转变各类东西,下面继续深入学习下,废话少说:

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);
    
}

  
0
0
分享到:
评论
1 楼 FX夜归人 2017-08-08  
1)
Day.valueOf("SUNDAY")

2)
DozerBeanMapper.map(source, destinationClass)

相关推荐

    使用google guava 实现定时缓存功能

    首先,Guava的Cache组件是其核心特性之一,它提供了一种高效、自动化的缓存机制。定时缓存功能允许我们存储计算结果或从远程服务获取的数据,并在预设的时间间隔后自动过期,以确保数据的时效性。这在处理频繁但计算...

    guava-23.0.zip guava.jar guava

    7. **检查类**:Preconditions、Objects等类提供了参数检查和对象验证功能,有助于防止程序中的错误。 8. **随机数生成**:Guava的Randomness类提供了更安全、更可控的随机数生成器。 9. **时间处理**:Guava提供...

    不加密Google Guava视频教程.txt

    ├─Google Guava 第06讲-Guava之函数式接口(非常类似Java8,熟悉的可以不看).wmv ├─Google Guava 第07讲-Guava之StopWatch和JDK之ServiceLoader讲解.wmv ├─Google Guava 第08讲-Guava之Files讲解(废话比较多)...

    java集合分组(Guava)

    Guava是Google推出的一个强大的Java工具包,其中的Multiset、Multimap和GroupingBy等功能提供了高级的集合操作,特别是对于集合的分组功能,它提供了一种高效且灵活的方式。 首先,我们需要理解Guava中的`...

    guava-18.0(guava-18.0.jar和guava-18.0-sources.jar)

    `guava-18.0.jar`是Guava库的编译后的二进制版本,包含了所有Guava类和方法的字节码,开发者可以直接在项目中引用这个JAR文件来使用Guava的功能。Guava 18.0版本包含了大量实用工具,例如: 1. **集合框架扩展**:...

    guava-31.1-jre.jar

    guava

    guava-19.0 jar和sources

    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源文档...

    google开源项目guava.jar包

    这个“guava.jar”文件就是包含了所有这些功能的归档包。 Guava的集合框架扩展了Java内置的集合类,如List、Set和Map,提供了更强大的功能。例如,它包含Multiset(多集合)和Multimap(多映射)这样的数据结构,...

    guava多个版本jar包

    Guava是Google开发的一个Java库,它包含许多Google核心库使用的功能,如集合、缓存、并发库、原生类型支持、字符串处理、I/O等。这个压缩包包含的是Guava的不同版本,分别是guava-2.6.2.jar、guava-18.0.jar、guava-...

    Guava官方教程-中文

    Google Guava是一个比较有趣的框架,它提供了很多有趣的的功能, google Guava 给开发者提供了如下常用功能: 集合(collections) 缓存(caching) 原生的类型支持(primitives support) 并发类库(concurrency ...

    eclipse-guava-插件

    4. 生成`hashCode()`和`equals()`:在类定义内,使用Eclipse的代码生成功能(通常快捷键是`Alt + Shift + S`,然后选择`Generate hashCode() and equals()`),选择Guava插件提供的选项。 5. 自动格式化:生成的...

    guava-21.0-rc2 、guava-21.0-rc2-javadoc 、guava-21.0-rc2-sources

    通过源码,开发者可以看到Guava是如何实现各种高级数据结构、集合操作、并发工具、缓存策略等复杂功能的。 Guava 21.0版本引入了许多新特性与改进,包括但不限于: - **新功能**: 添加了新的数据结构和算法,例如...

    Google Guava 官方教程

    Guava 支持函数式编程风格,包括 Function 接口,可以将一个对象转换为另一个对象,以及 Predicates,用于创建可重用的条件检查。 5. **字符串处理** Guava 提供了有用的字符串工具,如 Joiner 和 Splitter,用于...

    guava-26.0-jre.zip

    Guava是Google为Java平台设计并维护的一个开源库,它提供了许多高级功能和实用工具,极大地增强了Java开发的效率和代码质量。Guava 26.0-jre版本是针对Java运行时环境(JRE)优化的一个特定版本,旨在更好地支持Java...

    guava-r07.zip

    Guava集合框架是其核心功能之一,提供了很多增强型的集合类,如Multiset(多频数集合)、Multimap(多值映射)、ImmutableList(不可变列表)、ImmutableSet(不可变集合)和ImmutableMap(不可变映射),这些集合在...

    guava-17.0-API文档-中文版.zip

    赠送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文档-中文...

    guava-23.0-API文档-中文版.zip

    赠送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文档-中文...

    guava14.0.1jar包

    2. **缓存机制**:Guava提供了强大的本地缓存功能,允许开发者方便地创建和管理缓存,以提高应用程序的性能,同时支持基于引用或时间的自动过期策略。 3. **原生类型支持**:Guava提供了对基本类型的强类型集合,如...

    Guava 工程项目包 有实例

    Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...

Global site tag (gtag.js) - Google Analytics