开发中有没有经常遇到List要转成Map的情况,通过List返回另外一个List的情况,有的话,可以把下边代码拿走用了;
List转List
public static <T,V> List<V> transferList(List<T> orgList, Function<T, V> function) { if(CollectionUtils.isEmpty(orgList)) { return null; } List<V> result = Lists.newArrayList(); orgList.forEach(t -> result.add(function.apply(t))); return result; }
List转Map
public static <K, V> Map<K, V> listAsHashMap(List<V> list, Function<V, K> function) { HashMap<K, V> resultMap = new HashMap<K, V>(); if(CollectionUtils.isEmpty(list)) { return resultMap; } for(V v : list) { K key = function.apply(v); if(key != null) { resultMap.put(key, v); } } return resultMap; }
除了拷贝代码还需要做的是引入google的guava包,另外,代码基于java8实现(lambda表达式),如果是低于java8版本,可以自行把lambda表达式改成java8以前版本的语法