ad

《JAVA服务端研发知识图谱》_让你更懂Java后台研发_1.6.4 Map

admin 143 2023-10-25

【摘要】 本书摘自《JAVA服务端研发知识图谱》一书中第1章,第6节,由何为、迟文恒 编著。

1.6.4 Map

《JAVA服务端研发知识图谱》_让你更懂Java后台研发_1.6.4 Map

Map 是通过键值对存储的,可以通过键来获取值。 HashMap 是最常用的 Map, 本节以它为 例讲解 Map 的原理和实现。 HashMap 通过散列的形式,以达到快速存取和空间控制的目的。以手机号为例,用手机号对10000取余,那么所有手机号就散列了10000个分组,分别是从0到 9999,这种散列的基础就是 hashCode 方法。散列后手机号映射到的分组值会重复,要把这些散

列后重复的数据保存到某一分组中就用到了链表,在链表中要正确地取值就需要 equals 方法作 为对象的比较依据。这就是作为 HashMap 的 Key 值的类为什么必须实现 hashCode 和 equals 这 两个方法的原因

代码如下:

public static void testHashMap({

HashMap map=new HashMap~(;

map.put(new Person(1,"xiaoming"),"Musician");

map.put(new Person(1,"xiaoming"),"Musician");

map.put(new Person(2,"daming"),"Scientist");

map.put(new Person(3,"xiaobai"),"Astronaut");

System.out println(map);

for(Map.Entry entry: map.entrySet(){

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

}

for(Person person:map.keySet(O)){

System.out.println(person);

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

System.out.println(string);

}

Iteratorits =map.entrySet().iterator();

while (its,hasNext()){

Map.Entry entry = its.next();

System.outprintln("key="+entry.getKey()+"value="+entry.getValue();

运行结果如下:

{id = 1 name =xiaoming=Musician, id=2 name =daming=Scientist, id=3 name =xiaobai=Astronaut}

key =id = 1 name = xiaoming value =Musician

key =id =2 name =daming value =Scientist

key =id=3 name = xiaobai value =Astronaut

id =1 name=xiaoming

id=2 name=daming

id=3 name =xiaobai

Musician

Scientist

Astronaut

key = id = 1 name = xiaoming value =Musician

key = id =2 name =daming value =Scientist

key =id=3 name = xiaobai value =Astronaut

在上面的例子中,构建了一个 HashMap,key 值是之前经常使用的 Person 类对象,当然可 以构建 key 值是基本类型包装器类的对象,具体使用什么作为 Key 需要在实际项目中进行判 断,这里仅作为演示。代码中提供了几种遍历 HashMap 的方法,包含全量遍历 HashMap、 只遍 历Key 和只遍历Value。 一些其他方法这里就不过多介绍,读者可查看相关文档进行了解。

本节已经演示了常用容器的使用方法并介绍了容器的不同特性,在实际的项目中需要根据业务 的要求和容器的特性选择合适的容器。容器性能问题一般不会对业务造成太多困扰,除非特殊的业 务逻辑, 一般都不会遇到容器性能瓶颈。

1.7 泛型

正如前面例子所写,其实泛型最常见的使用场景就是在容器内,容器提供了存储对象的通 用能力,其他所有类型的对象都可以放入容器之内,声明容器时,用具体的类型标明容器中使 用的类型即可,这就是泛型的基本使用。

1.7.1 泛型的基本使用

泛型的基本使用前面已经有所涉及,在下面的例子中将创建一个继承结构,然后用基类的类型 来声明容器,看看容器是否表现正常。并且创建一个泛型方法,观察其对类型的处理。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:学习《零基础Java从入门到精通》_14.1 Java I/O
下一篇:看《Excel人力资源管理实操全流程演练》如何教你做更好的表格_3.1.2 年度人力资源需求预测
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×