Google Guava集合在实体类中的应用示例
来源:互联网 发布:电脑编程能自学吗 编辑:程序博客网 时间:2024/05/29 02:43
将实体list,转换成map,拿到所有id的集合方法。减少访问数据库。
实体基类BaseEntity
package com.mytest;import org.apache.commons.lang3.builder.ToStringBuilder;import org.apache.commons.lang3.builder.ToStringStyle;public class BaseEntity {private Long id;public Long getId() {return id;}public void setId(Long id) {this.id = id;}/** * 覆盖toString方法,目的显示所有JavaBean的属性值,省略写很多的getXxx的方法 */public String toString() {return ToStringBuilder.reflectionToString(this,ToStringStyle.MULTI_LINE_STYLE);}}
实体类Person
package com.mytest;public class Person extends BaseEntity{private String name;private String gender;private int age;private double weight;public Person(Long id, String name, String gender, int age, double weight) {super();this.setId(id);this.name = name;this.gender = gender;this.age = age;this.weight = weight;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}}
Example
package com.mytest;import java.util.List;import java.util.Map;import java.util.Set;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.google.common.base.Function;import com.google.common.collect.Lists;import com.google.common.collect.Maps;import com.google.common.collect.Ordering;public class Example { public static Logger logger = LoggerFactory.getLogger(Example.class); public static void main(String[] args) { List<Person> list = Lists.newArrayList(); list.add(new Person(4L,"jason", "male", 16, 120.50)); list.add(new Person(1L,"tom", "male", 48, 163.50)); list.add(new Person(3L,"john", "male", 33, 105)); list.add(new Person(2L,"rose", "female", 26, 90)); logger.debug(list.toString()); //获取ids List<Long> ids = entityIds(list); //entityIds方法 logger.debug("---------------ids-------------------"); logger.debug(ids.toString()); logger.debug("---------------maps-------------------"); //获取map Map<Long, Person> maps = entityMaps(list); //entityMaps方法 Set<Long> keys = maps.keySet(); for (Long id : keys) {logger.debug("key: " + id + " value: " + maps.get(id));}}/** * 获取表记录集合的Id集合 * @param list * @return */public static<T extends BaseEntity> List<Long> entityIds(List<T> list){List<Long> ids = Lists.transform(list, new Function<T, Long>(){ public Long apply(T entity){ return entity.getId(); } }); return ids;}/** * 根据实体记录,输出Map<Long id,K extend BaseEntity>集合 * @param list * @return */public static<V extends BaseEntity> Map<Long,V> entityMaps(List<V> list){ Map<Long,V> maps = Maps.uniqueIndex(list.iterator(), new Function<V, Long>() { @Override public Long apply(V entity) { return entity.getId(); }});return maps;}}
entityIds方法
/** * 获取表记录集合的Id集合 * @param list * @return */public static<T extends BaseEntity> List<Long> entityIds(List<T> list){List<Long> ids = Lists.transform(list, new Function<T, Long>(){ public Long apply(T entity){ return entity.getId(); } }); return ids;}
entityMaps方法
/** * 根据实体记录,输出Map<Long id,K extend BaseEntity>集合 * @param list * @return */public static<V extends BaseEntity> Map<Long,V> entityMaps(List<V> list){ Map<Long,V> maps = Maps.uniqueIndex(list.iterator(), new Function<V, Long>() { @Override public Long apply(V entity) { return entity.getId(); }});return maps;}
引入包,可参考pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gzdfbz</groupId><artifactId>mytest</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>18.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.3.2</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.7</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.7</version></dependency><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.3</version></dependency></dependencies></project>
log4j参考:
#log4j.rootLogger=DEBUG,consolelog4j.additivity.org.apache=true#log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.Threshold=DEBUGlog4j.appender.console.ImmediateFlush=truelog4j.appender.console.Target=System.errlog4j.appender.console.layout=org.apache.log4j.PatternLayout#log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %nlog4j.appender.console.layout.ConversionPattern=%l: %m %x %nlog4j.appender.com.mytest = debug
来自:http://my.oschina.net/u/221951/blog/333286
0 0
- Google Guava集合在实体类中的应用示例
- [Google Guava] 2.4-集合扩展工具类
- Google Guava有用的几个集合类
- [Google Guava] 2.4-集合扩展工具类
- Google Guava-集合类型
- 继承在实体类中的一个应用
- Guava RateLimiter在Web应用中的使用
- Google Guava 不可变集合
- guava (四)--集合中的FluentIterable类
- Google的Guava cache 应用
- google工具类guava
- Google Guava学习(6)-Guava集合工具 Multiset
- Google Guava学习(7)-Guava集合工具 Bimap接口
- Google Guava学习(8)-Guava集合工具 Table接口
- [Google Guava] 2.1-不可变集合
- [Google Guava] 2.1-不可变集合
- [Google Guava] 2.2-新集合类型
- [Google Guava] 2.2-新集合类型
- CentOS 安装blade环境
- java生产者消费者模式实现
- Android EditText 点击“下一个”跳转到指定的EditText 和inputType 参数类型说明
- soup.find_all()用法
- java ping ip工具优化
- Google Guava集合在实体类中的应用示例
- char* 是字符串?
- cocos2dx-lua制作新手引导
- 14.2 zeroice Grid 实例2
- 通过ajax请求实现加载更多——常见的问题
- 【Android - 框架】之GreenDao的使用
- 用php做乘法口诀、百钱买百鸡问题、过桥问题
- C语言再学习 -- vim常用快捷键(转)
- Kafka的Log存储解析