Map转二维数组,Map转数组
时间:2021-07-02 16:15:46
收藏:0
阅读:0
Java Map转二维数组,Map转数组
================================
?Copyright 蕃薯耀 2021-07-02
https://www.cnblogs.com/fanshuyao/
import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.ArrayUtils; import org.assertj.core.util.Arrays; /** * Map转二维数组 * */ public class MapArrayUtils { /** * Map转二维数组 * @param row Row * @return */ @SuppressWarnings("rawtypes") public static Object[][] getTwoArrayObject(Map map) { Object[][] object = null; if (map != null && !map.isEmpty()) { int size = map.size(); object = new Object[size][2]; Iterator iterator = map.entrySet().iterator(); for (int i = 0; i < size; i++) { Map.Entry entry = (Map.Entry) iterator.next(); Object key = entry.getKey(); Object value = entry.getValue(); object[i][0] = key; object[i][1] = value; } } return object; } /** * 根据指定的keys获取Map中的属性 * @param map * @param keys * @return */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static Map<String, Object> getMapByExistKeys(Map map, String[] keys) { if(map == null || map.isEmpty()) { return null; } if(keys == null || keys.length < 1) { return null; } Map<String, Object> resultMap = new LinkedHashMap<String, Object>(keys.length); Set<String> set = map.keySet(); for (String key : set) { if(ArrayUtils.contains(keys, key)) { resultMap.put(key, map.get(key)); } } return resultMap; } /** * 排除指定的keys获取Map中的其它属性 * @param map * @param excludeKeys 排除的keys * @return */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static Map<String, Object> getMapByExcludeKeys(Map map, String[] excludeKeys) { if(map == null || map.isEmpty()) { return null; } Map<String, Object> resultMap = new LinkedHashMap<String, Object>(); Set<String> set = map.keySet(); for (String key : set) { if(ArrayUtils.contains(excludeKeys, key)) { continue; } resultMap.put(key, map.get(key)); } return resultMap; } /** * 数据类型转换 * @param value Object * @param datePattern String * @return */ public static String valueCast(Object value, String datePattern) { String valueString = ""; //类型转换 if(value == null) { valueString = ""; }else if(value instanceof String) { valueString = (String)value; }else if(value instanceof Date) {//日期时间 Date date = (Date)value; if(StringUtils.isBlank(datePattern)) { valueString = DateUtils.formatDateTime(date); }else { valueString = DateUtils.format(date, datePattern); } }else if(Arrays.isArray(value) || value instanceof Collection) {//数组和集合 //判断是否为数组(建议优先使用Arrays): //1:Arrays.isArray(value) //2:value.getClass().isArray() valueString = JsonUtil.obj2String(value); }else { valueString = String.valueOf(value); } return valueString; } /** * Map转二维数组 * @param map Map参数 * @param keys 数组,当不为空时,只取keys里面的属性;当为空时,取出所有属性 * @param datePattern 时间转换格式 * @return */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static String[][] getTwoArray(Map map, String[] keys, String datePattern) { if(map == null || map.isEmpty()) { return null; } if(keys != null && keys.length > 0) { map = getMapByExistKeys(map, keys); //需要再次判断map是否为空 if(map == null || map.isEmpty()) { return null; } } String[][] array = new String[map.size()][2]; Set<String> set = map.keySet(); //数组索引 int index = 0; for (String key : set) { if(keys != null && keys.length > 0) { if(!ArrayUtils.contains(keys, key)) { continue; } } Object value = map.get(key); array[index][0] = key; array[index][1] = valueCast(value, datePattern); index ++; } return array; } /** * Map转二维数组 * @param map Map参数 * @param datePattern 时间转换格式 * @return */ @SuppressWarnings("rawtypes") public static String[][] getTwoArray(Map map, String datePattern){ return getTwoArray(map, null, datePattern); } /** * Map转二维数组 * @param map Map参数 * @param keys 数组,当不为空时,只取keys里面的属性;当为空时,取出所有属性 * @return */ @SuppressWarnings("rawtypes") public static String[][] getTwoArray(Map map, String[] keys){ return getTwoArray(map, keys, null); } /** * Map转二维数组 * @param map Map参数 * @return */ @SuppressWarnings("rawtypes") public static String[][] getTwoArray(Map map){ return getTwoArray(map, null, null); } /** * Map转二维数组 * @param map Map参数 * @param keys 数组,当不为空时,只取keys里面的属性;当为空时,取出所有属性 * @param datePattern 时间转换格式 * @return */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static String[][] getTwoArrayExclude(Map map, String[] excludeKeys, String datePattern) { if(map == null || map.isEmpty()) { return null; } if(excludeKeys != null && excludeKeys.length > 0) { map = getMapByExcludeKeys(map, excludeKeys); //需要再次判断map是否为空 if(map == null || map.isEmpty()) { return null; } } String[][] array = new String[map.size()][2]; Set<String> set = map.keySet(); //数组索引 int index = 0; for (String key : set) { Object value = map.get(key); array[index][0] = key; array[index][1] = valueCast(value, datePattern); index ++; } return array; } /** * Map转二维数组 * @param map Map参数 * @param excludeKeys 数组,当不为空时,取排除keys里面的其它属性;当为空时,取出所有属性 * @return */ @SuppressWarnings("rawtypes") public static String[][] getTwoArrayExclude(Map map, String[] excludeKeys){ return getTwoArrayExclude(map, excludeKeys, null); } public static void main(String[] args) { Map<String, Object> map = new LinkedHashMap<String, Object>(); map.put("aa", "11"); map.put("bb", 2); map.put("cc", true); map.put("dd", new Date()); map.put("ee", 6.333); map.put("ff", 66666666666L); map.put("gg", null); int[] a = new int[] {1,2,3}; map.put("ii", a); List<String> j = new ArrayList<String>(); j.add("a"); j.add("aa"); j.add("aaa"); map.put("jj", j); long start = System.currentTimeMillis(); System.out.println("start = " + start); String[][] array = getTwoArray(map, null, DateUtils.DATE); long end = System.currentTimeMillis(); System.out.println("end = " + end); System.out.println("end - start = " + (end - start)); if(array != null && array.length > 0) { for(int n = 0; n < array.length; n++) { System.out.println(array[n][0] + " = " + array[n][1]); } }else { System.out.println("array = " + array); } System.out.println("---------------------------------------------"); long start2 = System.currentTimeMillis(); System.out.println("start2 = " + start2); String[][] array2 = getTwoArray(map, new String[] {"dd", "cc", "ccc", "bb", "EE"}, DateUtils.DATE); long end2 = System.currentTimeMillis(); System.out.println("end2 = " + end2); System.out.println("end2 - start2 = " + (end2 - start2)); if(array2 != null && array2.length > 0) { for(int n = 0; n < array2.length; n++) { System.out.println(array2[n][0] + " = " + array2[n][1]); } }else { System.out.println("array2 = " + array2); } System.out.println("---------------------------------------------"); Map<String, Object> resultMap = getMapByExistKeys(map, new String[]{"aa", "BB", "cc"}); System.out.println("resultMap = " + resultMap); System.out.println("---------------------------------------------"); Map<String, Object> ExcludeMap = getMapByExcludeKeys(map, new String[]{"aa", "BB", "cc"}); System.out.println("ExcludeMap = " + ExcludeMap); System.out.println("---------------------------------------------"); long start3 = System.currentTimeMillis(); System.out.println("start3 = " + start3); String[][] array3 = getTwoArrayExclude(map, new String[]{"aa", "BB", "cc"}); long end3 = System.currentTimeMillis(); System.out.println("end3 = " + end3); System.out.println("end3 - start3 = " + (end3 - start3)); if(array3 != null && array3.length > 0) { for(int n = 0; n < array3.length; n++) { System.out.println(array3[n][0] + " = " + array3[n][1]); } }else { System.out.println("array3 = " + array3); } System.out.println("---------------------------------------------"); /* System.out.println("---------------------------------------------"); Object[][] array22 = getTwoArrayObject(map); if(array22 != null && array22.length > 0) { for(int n = 0; n < array22.length; n++) { System.out.println(array22[n][0] + " = " + array22[n][1]); } }else { System.out.println("array22 = " + array22); } */ } }
(时间宝贵,分享不易,捐赠回馈,^_^)
================================
?Copyright 蕃薯耀 2021-07-02
https://www.cnblogs.com/fanshuyao/
评论(0)