自: https://blog.csdn.net/mnmlist/article/details/53870520

meta_ws 连接: https://github.com/kse-music/demo/blob/064663ac7251285745dc915dad4a6837f723538f/src/test/java/com/hiekn/demo/test/util/GuavaTest.java

  1. import com.google.common.base.Function;
  2. import com.google.common.base.MoreObjects;
  3. import com.google.common.base.Preconditions;
  4. import com.google.common.cache.Cache;
  5. import com.google.common.cache.CacheBuilder;
  6. import com.google.common.cache.CacheLoader;
  7. import com.google.common.cache.LoadingCache;
  8. import com.google.common.collect.*;
  9. import com.google.common.collect.Table.Cell;
  10. import com.google.common.eventbus.AllowConcurrentEvents;
  11. import com.google.common.eventbus.AsyncEventBus;
  12. import com.google.common.eventbus.Subscribe;
  13. //import com.google.common.graph.*;
  14. //import com.hiekn.demo.test.TestBase;
  15. import org.junit.Test;
  16.  
  17. import java.util.*;
  18. import java.util.Map.Entry;
  19. import java.util.concurrent.Callable;
  20. import java.util.concurrent.Executors;
  21.  
  22. public class dd {
  23. public static void main(String[] args) {
  24.  
  25. List<PersonDb> personDbs = Lists.newArrayList(
  26. new PersonDb("a1", 10),
  27. new PersonDb("a2", 20),
  28. new PersonDb("a3", 30)
  29. );
  30. //返回的列表是原有列表的一个转换视图,对原有集合的修改当然会反映到新集合中,transform是单向的,无法向结果列表中添加新元素
  31. List<PersonVo> personVos = Lists.transform(personDbs, new Function<PersonDb, PersonVo>() {
  32. @Override
  33. public PersonVo apply(PersonDb personDb) {
  34. return viewTransformer(personDb);
  35. }
  36. });
  37. for(PersonDb personDb : personDbs) {
  38. personDb.setMsg("dbs修改!");
  39. }
  40. // Collections.shuffle(personVos);//随机打乱原来的顺序,和洗牌一样
  41. // personVos = ImmutableList.copyOf(personVos);
  42. personVos = Lists.newArrayList(personVos);
  43. //我认为直接循环遍历、转换生成resultList在时间和空间复杂度上会更好。
  44.  
  45. for(PersonVo personVo : personVos) {
  46. personVo.setMsg("Vos修改!");
  47. }
  48.  
  49. // personVos.add(viewTransformer(new PersonDb("a5", 50)));
  50. personVos.forEach(s -> System.out.println("--2-> "+s));
  51.  
  52. }
  53.  
  54. public static PersonVo viewTransformer(PersonDb personDb) {
  55. Preconditions.checkNotNull(personDb, "[PersonDbToVo]personDb为null");
  56. PersonVo personVo = new PersonVo();
  57. personVo.setName(personDb.getName() + ",from Db");
  58. personVo.setAge(personDb.getAge());
  59. personVo.setMsg(personDb.getMsg());
  60. return personVo;
  61. }
  62.  
  63. static class PersonDb {
  64. private String name;
  65. private int age;
  66. private String msg;
  67. public PersonDb(String name, int age){
  68. this.name = name;
  69. this.age = age;
  70. }
  71.  
  72. public String getName() {
  73. return name;
  74. }
  75.  
  76. public void setName(String name) {
  77. this.name = name;
  78. }
  79.  
  80. public int getAge() {
  81. return age;
  82. }
  83.  
  84. public void setAge(int age) {
  85. this.age = age;
  86. }
  87.  
  88. public String getMsg() {
  89. return msg;
  90. }
  91.  
  92. public void setMsg(String msg) {
  93. this.msg = msg;
  94. }
  95. @Override
  96. public String toString() {
  97. return MoreObjects.toStringHelper(this)
  98. .add("name", name)
  99. .add("age", age)
  100. .add("msg", msg).toString();
  101. }
  102. }
  103. static class PersonVo {
  104. private String name;
  105. private int age;
  106. private String msg;
  107.  
  108. public String getName() {
  109. return name;
  110. }
  111.  
  112. public void setName(String name) {
  113. this.name = name;
  114. }
  115.  
  116. public int getAge() {
  117. return age;
  118. }
  119.  
  120. public void setAge(int age) {
  121. this.age = age;
  122. }
  123.  
  124. public String getMsg() {
  125. return msg;
  126. }
  127.  
  128. public void setMsg(String msg) {
  129. this.msg = msg;
  130. }
  131.  
  132. @Override
  133. public String toString() {
  134. return MoreObjects.toStringHelper(this)
  135. .add("name", name)
  136. .add("age", age)
  137. .add("msg", msg).toString();
  138. }
  139. }
  140.  
  141. }

Transformer-view java实体 转换视图 Lists.transform的更多相关文章

  1. 利用JAXB实现java实体类和xml互相转换

    1.应用场景 在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换 2.Demo 2.1 student.java 实体类,包含list(set同 ...

  2. Gson把json串转换成java实体对象

    Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...

  3. Guava Lists.transform踩坑小记<转>

    1.问题提出 1.前段时间在项目中用到Lists.transform返回的List,在对该list修改后发现修改并没有反映在结果里,研究源码后发现问题还挺大.下面通过单步调试的结果来查看Guava L ...

  4. guava Lists.transform使用

    作用:将一个List中的实体类转化为另一个List中的实体类. 稍微方便一点.例如:将List<Student>转化为List<StudentVo> Student: pack ...

  5. ABAP表生成Java实体Bean

    项目中需要将HR模块中的表数据同步到Java系统中,向外围系统提供分发与查询服务,涉及到的表有两百多张,字段好几千上万个,如果手工一张张这些ABAP表在Java系统数据库中创建一遍的话,工作量将非常大 ...

  6. inner join ,left join ,right join 以及java时间转换

    1.inner join ,left join 与 right join (from 百度知道) 例表aaid adate1    a12    a23    a3表bbid  bdate1     ...

  7. net.sf.json在处理json对象转换为普通java实体对象时的问题和解决方案

    我使用的net.sf.json是json-lib-2.4-jdk15.jar,把json对象转换为普通java实体对象时候有个问题,josn对象转换为java对象之后,json串里面的那几个小数点的值 ...

  8. com.google.common.collect.Lists#transform使用注意

    /** * Returns a list that applies {@code function} to each element of {@code * fromList}. The return ...

  9. 在线数据库表(sql语句)生成java实体类工具

    相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设 ...

随机推荐

  1. Unity 如何在打包的时候执行一些逻辑

    1.如果想让unity在打包的过程中,执行一些逻辑,那么该如何做呢?代码如下: using UnityEditor; using UnityEditor.Build; using UnityEngin ...

  2. POJ-2096 Collecting Bugs (概率DP求期望)

    题目大意:有n种bug,m个程序,小明每天能找到一个bug.每次bug出现的种类和所在程序都是等机会均等的,并且默认为bug的数目无限多.如果要使每种bug都至少找到一个并且每个程序中都至少找到一个b ...

  3. UVA-1322 Minimizing Maximizer (DP+线段树优化)

    题目大意:给一个长度为n的区间,m条线段序列,找出这个序列的一个最短子序列,使得区间完全被覆盖. 题目分析:这道题不难想,定义状态dp(i)表示用前 i 条线段覆盖区间1~第 i 线段的右端点需要的最 ...

  4. C#加密方法汇总(SHA1加密字符串,MD5加密字符串,可逆加密等)

    using System;using System.Collections.Generic;using System.Text; namespace StringEncry{ class Encode ...

  5. 自定义Spark Partitioner提升es-hadoop Bulk效率

    http://www.jianshu.com/p/cccc56e39429/comments/2022782 和 https://github.com/elastic/elasticsearch-ha ...

  6. httpclient 连接管理器

    连接操作器 连接操作是客户端的底层套接字或可以通过外部实体,通常称为连接操作的被操作的状态的连接. OperatedClientConnection接口扩展了HttpClientConnection接 ...

  7. linux-网络使用

    linux网络的基本使用 "ifconfig" 查看已经被激活的网卡详细信息 "ifconfig eth0" 查看特定的网卡信息 [root@ssgao ~]# ...

  8. ADO SQL delete 日期条件参数

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  9. NodeJS express不是外部或内部命令的解决办法

    今天在用express生成项目的时候,使用cmd命令窗口发现express不是“内部或外部命令......”.但是我已经使用了npm install -g express成功安装了express模块插 ...

  10. 栈(stack),C++模板实现

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...