java如何直接创建map_Java如何创建泛型Map对象?

在这个Java泛型示例中,您将看到如何创建泛型Map对象。创建通用Map意味着您可以定义键的类型和存储在中的对象的值的类型Map。通用Map的声明和实例化仅与其他类型的集合不同,例如ListandSet是我们定义了两种类型。键的一种类型,值的另一种类型。

创建通用Map的语法如下:Map map = new Map();

哪里K是映射键V的类型,是映射中存储的值的类型。如果要让映射保存对Stringobject的引用值并使用Integer键作为键,则将编写声明和实例化,如下面的代码片段所示。Map  map = new HashMap();

为了使其更简单,您也可以使用菱形运算符。Map  map = new HashMap<>();

当您想向映射添加一些元素时,可以使用相同的put()方法。但是您不必担心在映射中放置了错误类型的对象。因为Java编译器将对其进行检查,以查看您是否存储了正确的类型。泛型将捕获在运行时不应发生的错误,因为代码已在编译时进行了验证。Map  map = new HashMap<>();

map.put(1, "A");

map.put(2, "B");

map.put(3, "C");

//map.put("4", new Date()); // 编译时错误!

String a = map.get(1);

String b = map.get(2);

String c = map.get(3);

get()方法将从映射中返回与给定键对应的值。因为映射知道它存储字符串值,所以它将返回一个字符串。因此,您无需从映射的get()方法强制转换返回值。您可能想知道为什么我们可以放置像1、2、3这样的键Integer?如果您还记得自动装箱功能,那么您会理解的。在屏幕后面,Java会将原语转换int为Integer。

现在,在我们知道如何添加元素并从映射上读回元素之后。让我们迭代映射的内容。映射将具有两个可以迭代的集合,即键和值。下面的代码段将为您演示。第一个代码段向您展示如何使用键集合迭代映射,而第二个代码段则迭代映射的值。

迭代键集合。Iterator keyIterator = map.keySet().iterator();

while (keyIterator.hasNext()) {

Integer key = keyIterator.next();

String value = map.get(key);

System.out.println("key = " + key + "; value = " + value);

}

当使用键集合迭代映射时,您将获得映射的键集,并检查hasNext()以查看它是否有next键。之后,可以使用next()方法获取键。要获取值,可以调用get()方法并将键作为参数传递。

迭代值集合。Iterator valueIterator = map.values().iterator();

while(valueIterator.hasNext()) {

System.out.println("value = " + valueIterator.next());

}

如果要迭代该值并忽略键,则可以从映射中获取值集合。验证它是否仍然包含更多值,您可以调用hasNext()方法。要获取值,只需从迭代器调用next()方法。

请注意,当使用泛型映射时,不需要进行任何类型转换。将所有内容添加到map,并根据键的类型和map的值从map读取。除了使用迭代器之外,还可以使用for-each循环来迭代映射。下面是使用for-each循环编写的上述代码的版本。for (Integer key : map.keySet()) {

String value = map.get(key);

System.out.println("key = " + key + "; value = " + value);

}

for (String s : map.values()) {

System.out.println("value = " + s);

}

您可以选择与您的编码样式匹配的任何一种方式。两种迭代映射对象的方法都会产生相同的结果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值