java,list数组转换成map

Python053

java,list数组转换成map,第1张

import java.util.ArrayList

import java.util.HashMap

import java.util.List

import java.util.Map

public class TestArray {

    public static void main(String[] args) {

        /**

         * 初始化一个 List,存放 String 数组,数组的第一位是 amount,第二位是 year,第三位是 month,第四位是 day 。

         */

        List<String[]> arr = new ArrayList<String[]>()

        arr.add(new String[] { "89", "2015", "06", "21" })

        arr.add(new String[] { "89", "2015", "06", "22" })

        arr.add(new String[] { "89", "2015", "06", "23" })

        /**

         * 创建一个 StringBuffer 临时存放 map.key 。

         */

        StringBuffer key = new StringBuffer()

        /**

         * 建一个 map 对象,

         */

        Map<String, String> map = new HashMap<String, String>()

        for (int i = 0 i < arr.size() i++) {

            // 获取 List 中的 String 数组元素。

            String[] element = arr.get(i)

            // 数组的第二位、第三位、第四位拼接成 key 。

            key.append(element[1]).append(element[2]).append(element[3])

            // 数组的第一位拼接成 value,初始化 map。

            map.put(key.toString(), element[0])

            // 临时的 StringBuffer 清空内容以便下次循环继续使用。

            key.delete(0, key.length())

        }

        // 打印 map

        System.out.println(map.toString())

    }

}

输出效果:

首先你的 [{"key":"1"},{"key":"2"}] 是个 json 数组格式

如果是简单的json 格式, 比如 "{\"key1\":\"1\",\"key2\":\"2\"}"

那么你可以使用 下面的示例:

  public static void main(String[] args){

        String jsonString = "{\"key1\":\"1\",\"key2\":\"2\"}"

        //String str = "[{\"key1\":\"1\"},{\"key2\":\"2\"}]"

        Map<String, Object> map = toMap(jsonString)

        for (Map.Entry<String, Object> entry : map.entrySet()){

            String key = entry.getKey()

            Object value = entry.getValue()

            System.out.println(key + ":" + value)

        }

    }

    @SuppressWarnings("unchecked")

    public static <T> Map<String, T> toMap(String json){

        Map<String, T> map = new HashMap<String, T>()

        JSONObject jsonObject = JSONObject.fromObject(json, new JsonConfig())

        Iterator<String> keys = jsonObject.keys()

        while (keys.hasNext()){

            String key = keys.next()

            Object value = jsonObject.get(key)

            map.put(key, (T) value)

        }

        return map

    }

执行结果:

你这种数组格式, 转成 map 那么 同名的key 会覆盖的....