1、

 <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>

2、java代码

 package xxxxxx;

 import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.commons.lang.StringUtils; import com.google.common.base.Function;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap; public class ListUtils { /**
* list 中有一个为主键key
*
* @param list
* @param function
* @return
*/
public static <K, V> Map<K, V> listToMap(List<V> list, Function<V, K> function) {
Map<K, V> map = new HashMap<K, V>();
if (list == null)
return map;
for (V value : list) {
K k = function.apply(value);
map.put(k, value);
}
return map;
} /**
* list 元素转为另一个元素的list
*/
public static <F, R> List<R> listConvert(List<F> list, Function<F, R> function) {
List<R> listN = new ArrayList<R>();
if (list == null)
return listN;
for (F value : list) {
R r = function.apply(value);
if (r != null)
listN.add(r);
}
return listN;
} /**
* list 元素过滤另一个元素的list
*/
public static <F> List<F> filter(List<F> list, Function<F, Boolean> function) {
List<F> listN = new ArrayList<F>();
if (list == null)
return listN;
for (F value : list) {
Boolean r = function.apply(value);
if (r)
listN.add(value);
}
return listN;
} /**
* list 元素转为另一个元素的list并且去重,适合list数据量较小
*/
public static <F, R> List<R> listConvertAndUnique(List<F> list, Function<F, R> function) {
List<R> listN = new ArrayList<R>();
if (list == null)
return listN;
for (F value : list) {
R r = function.apply(value);
if (r != null && !listN.contains(r))
listN.add(r);
}
return listN;
} /**
* list 元素转为以seg分割的字符串
*/
public static String split(List list, String seg) {
StringBuilder sb = new StringBuilder();
for (Object value : list) {
sb.append(value.toString() + seg);
}
String t = sb.toString();
if (t.endsWith(seg)) {
int end = t.length() - seg.length();
t = t.substring(0, end);
}
return t;
} public static <V> Map<Integer, V> listToMapByHashCode(List<V> list) {
Map<Integer, V> map = new HashMap<Integer, V>();
for (V value : list) {
map.put(Integer.valueOf(value.hashCode()), value);
}
return map;
} public static <K, V> Map<K, V> listToMapByFunction(List<V> list,Function<V,K> function) {
Map<K, V> map = new HashMap<K, V>();
for (V value : list) {
map.put(function.apply(value), value);
}
return map;
} // list to ListMultimap
public static <K, V> ListMultimap<K, V> listToListMultiMap(List<V> list, Function<V, K> function) {
ListMultimap listMultimap = ArrayListMultimap.<K, V> create();
for (V value : list) {
listMultimap.put(function.apply(value), value);
}
return listMultimap;
} public static <V> List<V> pageList(List<V> list, int pageIndex, int pageNum) {
int size = list.size();
int fromIndex = pageIndex * pageNum;
if (fromIndex > size) {
fromIndex = size;
}
int toIndex = fromIndex + pageNum;
if (toIndex > size) {
toIndex = size;
return list.subList(fromIndex, toIndex);
} return list.subList(fromIndex, toIndex);
} public static <E> boolean isEmpty(List<E> list) { return list == null || list.isEmpty();
} public static List<String> list(String s, String spe) { ArrayList<String> list = new ArrayList<>();
if (StringUtils.isBlank(s))
return list;
String[] e = s.split(spe);
for (String i : e) {
list.add(i);
}
return list; } public static <T> List<T> toList(T... a) { if (a == null)
return null;
List<T> l = new ArrayList<>();
for (T e : a) {
l.add(e);
} return l;
} /**
* 通过某个字段进行排序
*/
public static <K, V> List<V> sortList(List<V> list) { return null;
} }

3、在需要的类中调用即可

 List<UserAccountDto> maList = null; //实际不能辅助为null,应该获取一个list实例
List<TopMobileAccountVo> mavoList = ListUtils.listConvert(maList,new Function<UserAccountDto, TopMobileAccountVo>() {
public TopMobileAccountVo apply(UserAccountDto ma) {
TopMobileAccountVo vo = new TopMobileAccountVo();
vo.convertPOToVO(ma);
return vo;
}
});

java List的相关工具类的更多相关文章

  1. Java程序日志:java.util.logging.Logger类

    一.Logger 的级别 比log4j的级别详细,全部定义在java.util.logging.Level里面.各级别按降序排列如下:SEVERE(最高值)WARNINGINFOCONFIGFINEF ...

  2. 带有静态方法的类(java中的math类)

    带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 可以用私有构造函数来限制非抽象类被初始化. 例如,java中的math类.它让构造函数标记为私有,所以你无法创建Math的实例.但Math类却 ...

  3. HttpTool.java(在java tool util工具类中已存在) 暂保留

    HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...

  4. java中带继承类的加载顺序详解及实战

    一.背景: 在面试中,在java基础方面,类的加载顺序经常被问及,很多时候我们是搞不清楚到底类的加载顺序是怎么样的,那么今天我们就来看看带有继承的类的加载顺序到底是怎么一回事?在此记下也方便以后复习巩 ...

  5. java动态加载类和静态加载类笔记

    JAVA中的静态加载类是编译时刻加载类  动态加载类指的是运行时刻加载类 二者有什么区别呢 举一个例子  现在我创建了一个类  实现的功能假设为通过传入的参数调用具体的类和方法 class offic ...

  6. paip.java c++得到当前类,方法名称以及行号

    paip.java c++得到当前类,方法名称以及行号 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn ...

  7. java中的File类

    File类 java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类.它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑.对文件的真 ...

  8. Java基础(43):Java中的Object类与其方法(转)

    Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...

  9. java 无法找到main类解决办法

    java   无法找到main类解决办法 如果Java类有包名,你必须建相应的包文件夹并把文件编译或拷贝到到相应的文件夹下: 如下: 1.源文件文件:          E:\test\src\tes ...

随机推荐

  1. python xml与字典的相互转换

    def trans_xml_to_dict(xml): """ 将微信支付交互返回的 XML 格式数据转化为 Python Dict 对象 :param xml: 原始 ...

  2. vertex buffer 数据结构 如何读vb的memory pool

    vertex attribute (declaration)    vertex stream (memory pool) 这两部分 通过attribute 里面对memory的描述把两部分 vbo ...

  3. 转:myeclipse和eclipse的区别和联系,以及版本间的对应关系

    myeclipse和eclipse的区别和联系,以及版本间的对应关系 Eclipse:IBM花了4千万美金来开发这个IDE(Integrated Development Environment).第一 ...

  4. 倍福TwinCAT(贝福Beckhoff)基础教程2.1 TwinCAT常见类型简介

    常见数据类型可以参考EXCEL表格的内容,在准备值中输入非法数据,然后回车会有错误提示(例如BYTE数据输入256)   右击可以切换二进制或十进制显示,wData5可以被挨个采集每个位上的数据,也可 ...

  5. SurfaceView实现拍照预览

    一.布局代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...

  6. css3——position定位详解

    最近热衷于前端的开发,因为突然发现虽然对于网站.应用来说,功能处于绝对重要的地位,但是用户体验对于用户来讲同样是那么的重要,可以说是第一印象.最近在开发当中发现以前对于css中的position的理解 ...

  7. redhat 用yum安装的apache、mysql一般默认安装在哪个目录下?

    使用yum安装成功后,使用rpm -qa | grep httpd和rpm -qa | grep mysql查看是否安装成功然后使用rpm -ql httpd和rpm -ql mysql查看安装文件都 ...

  8. Archlinux风扇设置

    在笔记本(ThinkPad T440)连续两天因过热而死机后, 对内核的风扇控制算法果断失去信心. 风扇的用户层控制接口是 /proc/acpi/ibm/fan, 但为防止用户控制不当烧坏机器, 默认 ...

  9. 【Excle】8个快捷键

    1.CtrL+ F1 一键切换功能区是否显示,几乎每天都要用N次. 2.Ctrl + N 一键插入新的工作簿,再不用通过新建 - 空白工作簿来操作了. 3.Shift + F2 如果单元格中没有批注会 ...

  10. 谈谈PHP网站的防SQL注入

    SQL(Structured Query Language)即结构化查询语言.SQL 注入,就是把 SQL 命令插入到 Web 表单的输入域或页面请求参数的查询字符串中,在 Web表单向 Web 服务 ...