All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.opencodes.framework.tools.utils.MapUtils Maven / Gradle / Ivy

There is a newer version: 1.0.4
Show newest version
package cn.opencodes.framework.tools.utils;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

  
  
/** 
 * Map取值方法,其中取得多种值,避免null值转换 
 * @author HJ 
 */  
public class MapUtils extends org.apache.commons.collections.MapUtils{  
	/**
	 * 默认初始大小
	 */
	public static final int DEFAULT_INITIAL_CAPACITY = 16;
	/**
	 * 默认增长因子,当Map的size达到 容量*增长因子时,开始扩充Map
	 */
	public static final float DEFAULT_LOAD_FACTOR = 0.75f;
      
	/**
	 * 映射键值(参考Python的zip()函数)
* 例如:
* keys = [a,b,c,d]
* values = [1,2,3,4]
* 则得到的Map是 {a=1, b=2, c=3, d=4}
* 如果两个数组长度不同,则只对应最短部分 * * @param Key类型 * @param Value类型 * @param keys 键列表 * @param values 值列表 * @param isOrder 是否有序 * @return Map */ public static Map zip(K[] keys, V[] values, boolean isOrder) { if (ArrayUtils.isEmpty(keys) || ArrayUtils.isEmpty(values)) { return null; } final int size = Math.min(keys.length, values.length); final Map map = newHashMap(size, isOrder); for (int i = 0; i < size; i++) { map.put(keys[i], values[i]); } return map; } /** * 映射键值(参考Python的zip()函数)
* 例如:
* keys = a,b,c,d
* values = 1,2,3,4
* delimiter = , 则得到的Map是 {a=1, b=2, c=3, d=4}
* 如果两个数组长度不同,则只对应最短部分 * * @param keys 键列表 * @param values 值列表 * @param delimiter 分隔符 * @param isOrder 是否有序 * @return Map */ public static Map zip(String keys, String values, String delimiter, boolean isOrder) { return zip(StringUtils.split(keys, delimiter), StringUtils.split(values, delimiter), isOrder); } /** * 新建一个HashMap * @param Key类型 * @param Value类型 * @param size 初始大小,由于默认负载因子0.75,传入的size会实际初始大小为size / 0.75 + 1 * @param isOrder Map的Key是否有序,有序返回 {@link LinkedHashMap},否则返回 {@link HashMap} * @return HashMap对象 */ public static HashMap newHashMap(int size, boolean isOrder) { int initialCapacity = (int) (size / DEFAULT_LOAD_FACTOR) + 1; return isOrder ? new LinkedHashMap<>(initialCapacity) : new HashMap<>(initialCapacity); } /** * 新建一个HashMap * @param Key类型 * @param Value类型 * @param size 初始大小,由于默认负载因子0.75,传入的size会实际初始大小为size / 0.75 + 1 * @return HashMap对象 */ public static HashMap newHashMap(int size) { return newHashMap(size, false); } /** * 新建一个HashMap * @param Key类型 * @param Value类型 * @param isOrder Map的Key是否有序,有序返回 {@link LinkedHashMap},否则返回 {@link HashMap} * @return HashMap对象 */ public static HashMap newHashMap(boolean isOrder) { return newHashMap(DEFAULT_INITIAL_CAPACITY, isOrder); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy