问答详情
源自:5-4 学生选课---修改 Map 中的学生

修改map中对象

如果map的value是一个list,那么map.get(1).add(user),这样获取到一个list,向list里边添加一个user对象,这样子对吗?这样是修改了map.get(1)所对应的list吗?

提问者:qq_嗨棈L靈_0 2017-06-02 16:55

个回答

  • 喵老板次鱼鱼
    2017-06-24 04:07:54

    好想法呀!!你的想法完全正确!map的value可以是一个list,但是有一点需要注意的是,list里的add()方法是添加一个新的element到list里面去,不是修改原本的值。我写了一个实现你这个想法的代码,结果是:

    key = 1, value = [aaa]

    key = 1, value = [aaa,bbb]

    可以看到list中原本存储的list.get(0)是"aaa",现在调用了add("bbb")之后相当于给list添加了一个新的element。

    代码:

    public class MapList {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		Map<String,List<String>> m = new HashMap<String, List<String>>();
    		List<String> l = new ArrayList<String>();
    		l.add("aaa");//first element in list
    		m.put("1",l);
    		//predefined original value of key "1"
    		System.out.println("key = 1, "+"value = "+m.get("1").toString());
    		//update value of key "1"
    		m.get("1").add("bbb");
    		System.out.println("key = 1, "+"value = "+m.get("1").toString());
    		
    	}
    
    }


  • 伊人春风十里
    2017-06-03 12:45:00

    能发完整的吗