Java学习笔记-----键值对应的Map

我不知道我的博客对大家有没有用,但是现在都比较喜翻用手机,相信大家都感觉在手机上或者是在电脑上看比看书简单多了哈,为了给大家已提供便利,我还是再多写一点吧。

我们想一想,自己当年的那个时候@_@(哎?我才大一呀,我为啥说这话?算了,接着写吧……),其实就是考驾照的时候,考科一那个时候,是不是需要自己先拿一个号,等了好半天,好不容易等到了人家叫自己,然后把自己应该在哪台电脑上考试给忘了?反正我这个智障是忘了,之后又等了半天,才让人家工作人员给我查了一下座位号,才考上科一。

我们在这里面能不能思考一下呢?我们查询自己的号码的时候,是怎么查的呢?(接下来的例子,有点儿恶心,希望大家挺住)

warning warning 前方高能 前方高能

先来看看API里面是怎么写的吧:

Map 接口提供三种collection 视图,允许以键集、值集合或键-值映射关系集的形式查看某个映射的内容。映射的顺序 定义为迭代器在映射的 collection 视图中返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;某些映射实现则不保证顺序,如 HashMap 类。 其实重要的就是最后两句话:
某些映射实现可明确保证其顺序,如 TreeMap 类;
某些映射实现则不保证顺序,如 HashMap 类。 

那么我们再来了解一下Map键值对应的设计架构
图像不好画,就直接打字了

				 ->  AbstractMap实现接口  	->  HashMap继承AbstractMap
											->  TreeMap继承AbstractMap
<interface> Map  

  				 ->  HashTable实现接口  ->  properties类继承HashTable

下面的那个properties类在这篇博客里面并不进行详细描述(啊,不对,就是不描述,下一篇博客应该会写的)
这篇就只专注于HashMap和TreeMap两个类的使用

首先使用HashMap来写段代码:

import java.util.*;

public class MapDemo {
	public static void main(String [] args) {
		Scanner in = new Scanner(System.in);
		Map <String,Integer> map = new HashMap <String,Integer> ();
		//第一个参数是姓名  第二个是座位号
		map.put("熊初墨", 1003);
		map.put("张余歌", 1005);
		map.put("史诗王爵", 1008);
		System.out.println("待查询姓名:");
		String name = in.nextLine();
		System.out.println("座位号:" + map.get(name));
	}
}

这个名字啊,我真的是……(编辑小白:怎么啦,有问题吗?)
好吧,就这样吧。

Map设定键值对应的方法:map.put("熊初墨", 1003);
Ma使用键值对应来查询座位号:map.get(name)
好像需要记住的只有这两个了。

大家可能都很好奇,输出的结构是啥?别着急呀,现在就写:

待查询姓名:
熊初墨
座位号:1003

还好写对了,要不然多尴尬。

既然对了,就再多了解一下上面说的有顺序的问题,TreeMap和HashMap有什么区别呢?

  • 现在我输出一下HashMap里面的所有信息:
    在这里插入图片描述你们自己看,是不是 不按规律的输出了。

为了让一些强迫症患者也轻松的敲java,java提供了TreeMap类(当然这个是扯淡……肯定有他的重要作用)

来试试TreeMap:
在这里插入图片描述
这样看起来就很舒服了,看来是按照值的从大到小的顺序输出的。

最后加上一点东西:

Map的特点是什么?
特点就是:不重复,因为一个键对应一个值,所以这个也常用来排除相同的对象

那么提到不重复了,想必这个和之前写的比较(comparable)是有关的,但是他又是怎样进行比较的呢?

HashMap的具体流程是这样的:首先调用对象的hashcode方法,之后再调用equal方法,之后再确定对象是不是一样的,在这里,有没有想到之前的写过的调用Collection.sort()方法的时候,要是自己设计的对象是系统没有的数据类型,设计的对象就要实现(implements)接口comparable,之后再重写hashcode方法和equals方法来对对象进行比较

那么TreeMap是怎样进行比较的呢?
他就很简单粗暴了,要求你自己设计的对象,就需要是实现comparable接口的对象,或者在建立TreeMap()对象的时候指定comparator接口的对象

好了,两千字虽然不算多,但是我感觉我过的很充实,希望每天都像这样开开心心的敲代码,我会加油的,小伙伴们,我们一起加油吧!

多多点赞,会变好看,多多留言,会变有钱呐!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值