自: 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

import com.google.common.base.Function;
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.*;
import com.google.common.collect.Table.Cell;
import com.google.common.eventbus.AllowConcurrentEvents;
import com.google.common.eventbus.AsyncEventBus;
import com.google.common.eventbus.Subscribe;
//import com.google.common.graph.*;
//import com.hiekn.demo.test.TestBase;
import org.junit.Test; import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors; public class dd {
public static void main(String[] args) { List<PersonDb> personDbs = Lists.newArrayList(
new PersonDb("a1", 10),
new PersonDb("a2", 20),
new PersonDb("a3", 30)
);
//返回的列表是原有列表的一个转换视图,对原有集合的修改当然会反映到新集合中,transform是单向的,无法向结果列表中添加新元素
List<PersonVo> personVos = Lists.transform(personDbs, new Function<PersonDb, PersonVo>() {
@Override
public PersonVo apply(PersonDb personDb) {
return viewTransformer(personDb);
}
});
for(PersonDb personDb : personDbs) {
personDb.setMsg("dbs修改!");
}
// Collections.shuffle(personVos);//随机打乱原来的顺序,和洗牌一样
// personVos = ImmutableList.copyOf(personVos);
personVos = Lists.newArrayList(personVos);
//我认为直接循环遍历、转换生成resultList在时间和空间复杂度上会更好。 for(PersonVo personVo : personVos) {
personVo.setMsg("Vos修改!");
} // personVos.add(viewTransformer(new PersonDb("a5", 50)));
personVos.forEach(s -> System.out.println("--2-> "+s)); } public static PersonVo viewTransformer(PersonDb personDb) {
Preconditions.checkNotNull(personDb, "[PersonDbToVo]personDb为null");
PersonVo personVo = new PersonVo();
personVo.setName(personDb.getName() + ",from Db");
personVo.setAge(personDb.getAge());
personVo.setMsg(personDb.getMsg());
return personVo;
} static class PersonDb {
private String name;
private int age;
private String msg;
public PersonDb(String name, int age){
this.name = name;
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("name", name)
.add("age", age)
.add("msg", msg).toString();
}
}
static class PersonVo {
private String name;
private int age;
private String msg; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} @Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("name", name)
.add("age", age)
.add("msg", msg).toString();
}
} }

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. Python mysql-表中数据的大量插入

    2017-09-06 23:28:26 import pymysql db = pymysql.connect("localhost","root"," ...

  2. apktool 打包解包apk的总结

    1) 不需要另外下载 baksmali-2.1.2.jar, apktool.jar 好像都包含了. apktool d zhanqi.xxx.apk -o zhanqi 2) smalidea-0. ...

  3. Java EE、Java SE和Java ME

    Java SE=Java Standard EditionJava EE=Java Enterprise EditionJava ME=Java Mobile Edition SE主要用于桌面程序,控 ...

  4. 你的centos/linux下有多个php.ini,不确定是哪个时

    你的centos/linux下有多个php.ini,不确定是哪个时,但是你自己知道,你的php安装目录. 比如我的php安装目录是 /usr/local/php 那么可以通过命令来查找php.ini的 ...

  5. 雷林鹏分享:Ruby 安装 - Windows

    Ruby 安装 - Windows 下面列出了在 Windows 机器上安装 Ruby 的步骤. 注意:在安装时,您可能有不同的可用版本. 下载最新版的 Ruby 压缩文件.请点击这里下载. 下载 R ...

  6. highcharts图表配置参数汇总

    一.chart的部分相关属性说明    renderTo: 'container',      //图表的页面显示容器(也就是要显示到的div) chart.events.addSeries:添加数列 ...

  7. 一些有趣的使用function

    转载来源:新人必看的短小而精悍的javascript function 1.回到顶部,优点使用浏览器刷新频率的requestAnimationFrame,很顺滑 const scrollToTop = ...

  8. php实现频率限制

    一.前言 公司要做呼叫中心,呼叫中心为了防止骚扰,需要限制用户拨打电话的频率,比如30s只能点击一次.这样的需求是通过redis来实现的. 二.具体实现 <?php class Resource ...

  9. bzoj1202: [HNOI2005]狡猾的商人 floyd

    刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), .当 Ai大于0时表示这个月盈 ...

  10. Leetcode 96

    class Solution { public: int numTrees(int n) { ]; dp[] = ; dp[] = ; dp[] = ; ;i <= n;i++){ ; ;j & ...