Map方法输出value问题
既然value可以指向同一个key,那么如何用输出同一个key下的所有value值呢?怎么删除同一key中指定的value?
正在回答
如果key值的类型是String类型,需要注意的是,key不能是同一个对象,也就是地址不能相同,否则value依然会覆盖。你可以将我贴出的代码改一下,改成同一个对象,你会发现,最后的值也会被覆盖。
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的一个小示例,你可以运行一下看看。
//将歌曲添加到默认播放列表中
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();
}
改来改去,发现最后根本没有输出结果……
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星