Java List转map通用方法

目前在项目中遇到一个需求,就是需要将List转换为Map,并且List的参数类型是不确定的,因此需要考虑使用泛型,然后Map的key值也是依List参数的不同而不同的(e.g. List的参数为bean A, A里面有两个属性 a和b,key值是a+b,所以需要使用接口来实现),并且考虑到要方便获取到key值,就需要在通用的List转Map方法中使用回调方法来实现(依靠接口来实现回调)。

1、List转Map的工具类的代码如下:

public abstract class List2MapConverter {

public static <K, V extends Key<K>> Map<K, V> convert(List<V> list) {

return convert(list, new List2MapCallback<K, V>() {

@Override

public K getKey(V data) {

return data.getKey();

}

});

}

public static <K, V> Map<K, V> convert(List<V> list, List2MapCallback<K, V> callback) {

Map<K, V> map = new HashMap<K, V>();

if (CollectionUtils.isEmpty(list) || null == callback) {

return map;

}

for (V data : list) {

if (null != data) {

map.put(callback.getKey(data), data);

}

}

return map;

}

public interface List2MapCallback<K, V> {

public K getKey(V data);

}

public interface Key<K> {

public K getKey();

}

}

注:在上面的方法中使用了直接使用匿名类的方式,而没有单独定义一个Java来实现List2MapCallback这个接口。

2、List参数的定义参考如下:

public class PosterBlacklist implements Key<String> {

。。。

}

时间: 2024-08-11 04:23:11

Java List转map通用方法的相关文章

Java 8之Map新增方法&lt;转&gt;

在Java 8中的Map.Entry接口中增加了comparingByKey, comparingByValue方法,它们都返回Comparator<Map.Entry<K,V>>, Comparator是一个函数接口,主要是方便Lambda表达式的使用. 在Java 8中的Map接口增加了一些default方法,提升了对key, value操作的便利性.下面是基本数据的定义,通过这些数据说明新增的一些方法. 1234 Map<Integer, String> map

Java中迭代Map的方法

Map<String, String> mapServlet = new HashMap<String, String>(); System.out.println("迭代方法一"); for( Object key:mapServlet.keySet()){ System.out.println( key ); System.out.println(mapServlet.get(key)); } System.out.println("迭代方法二&q

java代码跨域通用方法

/** * 通用的跨越调接口方法 * @param path 请求的url路径 * @return */public static String getHttpResponse(String path) { try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); PrintWriter out = null; conn.setRequestMethod("P

java把class类写入excel和读取出来的通用方法

这个例子中用了反射,泛型实现了通用的excel读写方法. 我们常常遇到要把一个类class写入excel的时候,有时候class的字段非常多,我们不可能一个个的去get写入excel.这里写了一个通用方法.只要传入数据的list和类型,就能很方便的把数据写入excel,也能很方便的读取出来. 例子下载: java通过class读写excel的例子 首先要引用这两个包 jxl.jar poi-3.9-20121203.jar 相关代码如下: BeanRefUtil 反射代码---自动get类cla

Java遍历Map集合方法

package testMap; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /**  * 循环遍历Map集合  *   * @author Administrator  *   */ pub

java 中遍历Map的几种方法

转自: http://blog.csdn.net/wzb56/article/details/7864911 方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基于map的key:map.keySet() 而每一类都有两种遍历方式: a.利用迭代器 iterator: b.利用for-each循环: 代码举例如下 package cn.wzb; import java.util.ArrayList; import java.util.HashMap; impor

java中遍历MAP的几种方法

java中遍历MAP的几种方法 Java代码 Map<String,String> map=new HashMap<String,String>();    map.put("username", "qq");    map.put("passWord", "123");    map.put("userID", "1");    map.put("em

Java连接MySQL数据库增删改查通用方法

Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类下面写好多方法,要是多个数据库,就要写多个类多个方法,导致代码编写太过于繁琐,所以为了改变这样的繁琐,我将连接数据库的方法进行了一系列的封装,使用户传入一个对象值Object就可以得到想要的. 我在之前写过一篇普通的Java连接MySQL数据库,大家可以看看,以便对比参考之后就知道差距了  数据库--MySQL-->Java篇 接下来我给大家讲讲如何将

Java中遍历Map对象的4种方法

在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等) 方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. [java] view