Java中的Map允许有重复元素吗?

 更新时间:2019年02月25日 11:30:40   作者:zqxhit1234  
今天小编就为大家分享一篇关于Java中的Map允许有重复元素吗?,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

Java中常见的三个集合接口:List、Set、Map,已经知道List中是允许有重复元素的,而Set中是不允许有重复元素的,那么Map中允许有重复元素吗?

查阅资料,发现是不可以的,因为map是无序的,它的查询需要通过key的值来查找,如果你定义两个同样的key,那么一个key就对应了多个值,这样就违背了java对map的定义,键和值是一一对应的。所以key不可以重复。

写个代码测试一下:

package com.test.collection;
import java.util.HashMap;
import java.util.Map;
//Map中key值不可重复的测试
public class TestEquals {
  public static void main(String[] args) {
    String s1=new String("abc");
    String s2=new String("abc");
    Map map=new HashMap();
    map.put(s1, "abc123");
    map.put(s2, "ABC456");//第二个会覆盖第一个元素
    //注意:map中key值不可重复,直接根据比较的是equals,只有equals相同则覆盖
    System.out.println(map.size());
    System.out.println(map.get(s1));
  }
}

输出结果:

1
ABC456

如果key重复,应该选取这个key对应的哪个值放入容器呢?做了一下测试:

public class Test {
  public static Map putSome(Map<String,String> map){
    map.put("gender", "Male");
    map.put("name", "Athor");
    map.put("name", "Cindy");
    map.put("name", "Billy");
    map.put("from","China");
    return map;
  }
  public static void main(String[] args) {
    System.out.println(putSome(new HashMap<String,String>()));
    System.out.println(putSome(new TreeMap<String,String>()));
    System.out.println(putSome(new LinkedHashMap<String,String>()));
  }
}

输出结果:

{name=Billy, gender=Male, from=China}
{from=China, gender=Male, name=Billy}
{gender=Male, name=Billy, from=China}

可见不论是Map的哪个子类,键name对应的值都是Billy,即最后一个name的键值对,它覆盖了之前的name键值对。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 简单实现Java通讯录系统

    简单实现Java通讯录系统

    这篇文章主要为大家详细介绍了如何简单实现Java通讯录系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Java用BigDecimal类解决Double类型精度丢失的问题

    Java用BigDecimal类解决Double类型精度丢失的问题

    这篇文章主要介绍了Java用BigDecimal类解决Double类型精度丢失的问题,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-12-12
  • 使用java代码代替xml实现SSM教程

    使用java代码代替xml实现SSM教程

    这篇文章主要介绍了使用java代码代替xml实现SSM教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java中JWT的使用的详细教程

    Java中JWT的使用的详细教程

    JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输,本文介绍了Java中JWT的使用,需要的朋友可以参考下
    2023-02-02
  • Spring基于注解配置AOP详解

    Spring基于注解配置AOP详解

    这篇文章主要介绍了Spring基于注解配置AOP详解,Spring 的 AOP 功能是基于 AspectJ 实现的,支持使用注解声明式定义 AOP 切面,Spring 基于注解配置 AOP 需要启用 AspectJ 自动代理功能,需要的朋友可以参考下
    2023-09-09
  • SpringBoot整合MybatisPlus的教程详解

    SpringBoot整合MybatisPlus的教程详解

    这篇文章主要介绍了SpringBoot整合MybatisPlus的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • SpringBoot路径映射实现过程图解

    SpringBoot路径映射实现过程图解

    这篇文章主要介绍了SpringBoot路径映射实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • SpringBoot整合Servlet和Filter和Listener组件详解

    SpringBoot整合Servlet和Filter和Listener组件详解

    这篇文章主要介绍了SpringBoot整合Servlet和Filter和Listener组件详解,在整合某报表插件时就需要使用Servlet,Spring Boot中对于整合这些基本的Web组件也提供了很好的支持,需要的朋友可以参考下
    2024-01-01
  • java组装树形结构List问题

    java组装树形结构List问题

    这篇文章主要介绍了java组装树形结构List问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Java Socket一对多通信实现之并发处理方式

    Java Socket一对多通信实现之并发处理方式

    这篇文章主要介绍了Java Socket一对多通信实现之并发处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论