Java的map集合累计存入数据

把遍历一个map集合中的值累计存入另一个map中,一个key对应多个值,不是只有一个...求大神指点。

你可以定义一个list集合,存放多个值,然后将key对应的value值是list的集合对象,既满足map的哈希表结构,也保证了key对应多个值的这个需求

叙述问题让外行听懂也是一项重要技能。

Java Map是一个哈希表结构的数据结构,每个key对应一个hash值,然后根据这个hash值去找对应的value。
所以一个key不能对应多个value,但是多个key可以对应一个value。
通俗的讲:一个函数只能对应一个值,但是一个值可以对应多个函数。

每个key对应一个hash值,然后根据hash值去找对应的value; 可以理解成一个函数对应一个值,一个值可以对应多个函数.

key 值对应一个 value 值 key不能重复 但是value可以重复,,,

package com.koolsee.xulonghui.test;

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

public class Test {

public static void main(String[] args) {
    Test t = new Test();
    Map<Integer, User> map = new HashMap<Integer, User>();
    map.put(1, t.new User(1, "zhansan", 1));
    map.put(2, t.new User(2, "zhansan", 1));
    map.put(3, t.new User(3, "lisi", 1));
    map.put(4, t.new User(4, "lisi", 1));
    map.put(5, t.new User(5, "wangwu", 1));
    map.put(6, t.new User(6, "zhaoliu", 1));
    System.out.println(getNameCount(map));

}

private static Map<String, Integer> getNameCount(Map<Integer, User> map) {
    Map<String, Integer> resultMap = null;
    if ((map != null) && !map.isEmpty()) {
        resultMap = new HashMap<String, Integer>();
        for (Integer key : map.keySet()) {
            User user = map.get(key);
            Integer count = resultMap.get(user.getName());
            if (count != null) {
                resultMap.put(user.getName(), count + 1);
            } else {
                resultMap.put(user.getName(), 1);
            }
        }
    }
    return resultMap;
}

public class User {

    private Integer id;

    private String name;

    private Integer sex;

    public User(Integer id, String name, Integer sex) {
        super();
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getSex() {
        return this.sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

}

}

 package com.koolsee.xulonghui.test;

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

public class Test {

    public static void main(String[] args) {
        Test t = new Test();
        Map<Integer, User> map = new HashMap<Integer, User>();
        map.put(1, t.new User(1, "zhansan", 1));
        map.put(2, t.new User(2, "zhansan", 1));
        map.put(3, t.new User(3, "lisi", 1));
        map.put(4, t.new User(4, "lisi", 1));
        map.put(5, t.new User(5, "wangwu", 1));
        map.put(6, t.new User(6, "zhaoliu", 1));
        System.out.println(getNameCount(map));

    }

    private static Map<String, Integer> getNameCount(Map<Integer, User> map) {
        Map<String, Integer> resultMap = null;
        if ((map != null) && !map.isEmpty()) {
            resultMap = new HashMap<String, Integer>();
            for (Integer key : map.keySet()) {
                User user = map.get(key);
                Integer count = resultMap.get(user.getName());
                if (count != null) {
                    resultMap.put(user.getName(), count + 1);
                } else {
                    resultMap.put(user.getName(), 1);
                }
            }
        }
        return resultMap;
    }

    public class User {

        private Integer id;

        private String name;

        private Integer sex;

        public User(Integer id, String name, Integer sex) {
            super();
            this.id = id;
            this.name = name;
            this.sex = sex;
        }

        public Integer getId() {
            return this.id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getSex() {
            return this.sex;
        }

        public void setSex(Integer sex) {
            this.sex = sex;
        }

    }

}

一个钥匙只能开一把锁 但是一把锁能有多个钥匙 钥匙就是key(键) 锁就是value(值)

每个key值只能对应一个hash值,只能对应一个value值,所以一个key对应多个value值得情况并不存在,可是一个value值可以对应多个key值

map中key是唯一的,如果前面有一个key,后面有相同的key值填入,那么后面这个 key对应的value会把,前面相同key的value 替换掉图片说明

多个值放个list好咯,然后Map

Map testMap = new HashedMap();
List testList = new ArrayList<>();
testList.add("value1");
testList.add("value2");
testList.add("value3");
testMap.put("key1", testList);
把多个value值放到list集合里面就行了,或者多个value值组成一个字符串
如 : Strign value = value1+","+value2+","+value3;

你描述的不是很清楚,下次提问先把问题讲清楚或者直接截图贴上
testMap.put(key,Object);
看到没有,value其实是一个Object类型的,也就是说可以存储任意对象,比如 bean、集合、数组、字符串......

真的,这是你5次问相同的问题了,这个知识点有这么难吗。。你去学一下啊