Map方法输出value问题

Map方法输出value问题

既然value可以指向同一个key,那么如何用输出同一个key下的所有value值呢?怎么删除同一key中指定的value?

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

如果key值的类型是String类型,需要注意的是,key不能是同一个对象,也就是地址不能相同,否则value依然会覆盖。你可以将我贴出的代码改一下,改成同一个对象,你会发现,最后的值也会被覆盖。

Tender10 2017-05-29 21:23:31

public class test1 { 
    public static void main(String[] args) { 
         
        String str1 = new String("xx"); 
        String str2 = new String("xx"); 
        System.out.println(str1 == str2); 
         
        Map<String ,String> map = new IdentityHashMap<String ,String>(); 
        map.put(str1, "hello"); 
        map.put(str2, "world"); 
     
        for(Entry<String,String> entry : map.entrySet()) 
        { 
            System.out.println(entry.getKey()+"   " + entry.getValue()); 
        } 
        System.out.println("     containsKey---> " + map.containsKey("xx")); 
        System.out.println("str1 containsKey---> " + map.containsKey(str1)); 
        System.out.println("str2 containsKey---> " + map.containsKey(str2)); 
        System.out.println("      value----> " + map.get("xx")); 
        System.out.println("str1  value----> " + map.get(str1)); 
        System.out.println("str2  value----> " + map.get(str2)); 
    } 

如上代码是一个key保存了两个value的一个小示例,你可以运行一下看看。

  • 提问者 半岛鸡盒 #1
    这个例子里str1和str2的值虽然相等,但是指向的内存地址不是同一个,所以才不会被覆盖。 如果key直接用"默认"字符串赋值的话,是无论怎么样都会覆盖上一个value的吗…?
    2017-05-29 21:36:38
提问者 半岛鸡盒 2017-05-29 20:35:32
	//将歌曲添加到默认播放列表中
	public void addToPlayList(Song song){
		mainList.put("默认播放列表", song);	
		System.out.println("默认播放列表中的所有歌曲为:");

	}
	//输出所有默认列表中的歌曲信息
	public void putMainList(){
		Set<Entry<String, Song>> entryset= mainList.entrySet();
		for(Entry<String, Song> date:entryset){
			System.out.println(date.getValue());
		}  
	}
     // 将歌曲添加到默认播放列表
    public static void main(main(String[] args){
        System.out.println("将歌曲添加到主播放列表");
        System.out.println("请输入要添加的歌曲数量:");
        int num = SCANNER.nextInt();
        for (int x = 0; x < num; x++) {
        System.out.println("请输入第" + (x + 1) + "首歌曲");
        System.out.println("请输入歌曲的id:");
            String id = SCANNER.next();
        System.out.println("请输入歌曲的名称:");
            String name = SCANNER.next();
            System.out.println("请输入歌曲的演唱者:");
            String singer = SCANNER.next();
            Song song = new Song(id, name, singer);
            addToPlayList(song);
        }
        putMainList();
    }
改来改去,发现最后根本没有输出结果……
Tender10 2017-05-29 20:31:31

在课程Java集合4-2中提到了用entrySet方法,去获得key和value。你可以听一下老师讲的课程哦!

  • 提问者 半岛鸡盒 #1
    视频中没有讲怎么存储在同一key中,我每次存值的时候总是会覆盖上一个同一key的值啊,怎么办
    2017-05-29 20:40:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师