文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中的map如何使用

2023-05-30 21:52

关注

这篇文章给大家介绍Java中的map如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Map与Collection

提到Map集合接口就不能不提到Collection集合接口,map和Collection都是集合接口,Collection中包含了我们经常用的list和set子接口;而Map是与Collection处于平级的地位;Collection中存储的是一组对象,而Map存储的是一个键值对(key/value).

Map

java为数据结构中的映射定义了一个接口java.util.Map
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。

Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。

在Map对象中,Key是唯一的,不可重复的。null也可以作为key,但这样的key只能有一个;但是可以有一个或多个key所对应的value都是null。

常用API: 

clear()从 Map 中删除所有映射
remove(Object key)从 Map 中删除键和关联的值
put(Object key, Object value)将指定值与指定键相关联
putAll(Map t)将指定 Map 中的所有映射复制到此 map
entrySet()返回 Map 中所包含映射的 Set 视图。Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素
keySet()返回 Map 中所包含键的 Set 视图。如果要删除 Set 中的元素还将会删除 Map 中相应的映射(键和值)
values()返回 map 中所包含值的 Collection 视图。如果要删除 Collection 中的元素还将会删除 Map 中相应的映射(键和值)
get(Object key)返回与指定键关联的值
containsKey(Object key)如果 Map 包含指定键的映射,则返回 true
containsValue(Object value)如果此 Map 将一个或多个键映射到指定值,则返回 true
isEmpty()如果 Map 不包含键-值映射,则返回 true
size()返回 Map 中的键-值映射的数目

当我们想判断map中是否存在某个key时,可以用方法containsKey()来判断,同样想判断是否存在value时用方法containsValue()来判断;代码如下:

public static void main(String[] args) {Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >();map.put(null,null);map.put("a", "1");map.put("b", "2");map.put("c", "3");if (map.containsKey("a")) {System.out.println("Key=Ture");if (map.containsValue("1")) {System.out.println("value=Ture");}}}

执行结果是:
Key=Ture value=Ture

Map中提供了一些常用的方法来取出Map中的数据,用的比较多的比如:entrySet()方法,;entrySet()的返回值是个Set集合,此集合的类型为Map.Entry。Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法,代码如下:

public static void main(String[] args) {Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >();map.put(null,null);map.put("a", "1");map.put("b", "2");map.put("c", "3");Set<Entry<Serializable, Serializable>> entrySet= map.entrySet();System.out.println("entrySet="+entrySet);for (Entry key : entrySet) {System.out.println("key.getKey="+key.getKey()+" key.getValue()="+ key.getValue());}}

执行的结果如下:

entrySet=[null=null, a=1, b=2, c=3]
key.getKey=null key.getValue()=null
key.getKey=a key.getValue()=1
key.getKey=b key.getValue()=2
key.getKey=c key.getValue()=3

接下来要说的是keySet方法,keySet()方法返回值是Map中key值的集合,然后可以通过get(key)遍历来获取value值,代码如下:

public static void main(String[] args) {     Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >();     map.put(null,null);     map.put("a", "1");     map.put("b", "2");     map.put("c", "3");          Set keySet= map.keySet();     System.out.println("keySet="+keySet);     for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {       Object key = (Object) iterator.next();       Object value = map.get(key);       System.out.println("key = "+key+ " value="+value);     }   }

执行的结果如下:

keySet=[null, a, b,c]
key = null value=null
key = a value=1
key = b value=2
key = c value=3

最后要说的是,map还有一个values()方法,values()方法返回值是Map中value值的集合,通过遍历可以取出value的值,代码如下:

public static void main(String[] args) {Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>();map.put(null, null);map.put("a", "1");map.put("b", "2");map.put("c", "3");Collection c = map.values();System.out.println("map.values()=" + map.values());for (Iterator iterator = c.iterator(); iterator.hasNext();) {Object value = (Object) iterator.next();System.out.println("value="+value);}}

代码执行结果如下:

map.values()=[null,1, 2, 3]
value=null
value=1
value=2
value=3

自己做的一个利用map进行hql语句拼接的小例子:

public class HqlMap {public static void main(String[] args) {Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>();map.put("isDelete", 0);map.put("roomTypeName", "test");Map<Serializable, Serializable> map1 = new HashMap<Serializable, Serializable>();StringBuilder hqlBuilder = new StringBuilder();hqlBuilder.append(" from Build ");String hql = "" ;if (map.isEmpty()) {hql=hqlBuilder.toString();} else {hqlBuilder.append(" where ");Set keySet = map.keySet();for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {Object key = (Object) iterator.next();hqlBuilder.append(key + "=:" + key + " and ");}//去掉最后的一个and int lastIndex = hqlBuilder.lastIndexOf("and");if (lastIndex > -1) {hql = hqlBuilder.substring(0, lastIndex)             + hqlBuilder.substring(lastIndex + 3,                 hqlBuilder.length());}}System.out.println(hql);}}

关于Java中的map如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯