map接口的实现类 详解java常用工具类

java中的***p接口和python中的***p函数完全不同。虽然都有映射关系,但是java的***p接口更接近于dictionary和set这两种引用数据类型。这个接口是一个双列***,其元素由键和值组成,即键和值。这个接口有两个实现类:hash***p和tree***p。Hash***p在内部维护一个散列顺序,所以...

java中的***p接口和python中的***p函数完全不同。虽然都有映射关系,但是java的***p接口更接近于dictionary和set这两种引用数据类型。这个接口是一个双列***,其元素由键和值组成,即键和值。这个接口有两个实现类:hash***p和tree***p。Hash***p在内部维护一个散列顺序,所以它与我们在宏中看到的顺序不太一样。以下示例将遍历该***中的所有值。

public class example 18 { public static void ***in(String [] args) {//直接获取***p中的值//Map中存储的值是***Map Map = new HashMap();***p.put("1 "," javaScript ");***p.put("2 "," Linux ");***p.put("3 "," Unix ");***值= ***p . values();//取出***p对象中的值,转换成******类迭代器it = values . Iterator();while(it . has next()){ Object value = it . next();System.out.println(值);}}}这里,***p中的所有元素都通过一个java迭代器进行迭代。这里的get方法根据输入键返回相应的值。这里,不允许重复的元素。如果输入了相同的键-值对,它将被视为对键的相应值的修改。也就是下面的例子:

***p.put("3","MacOS");

也就是说,键3的值已被修改。简而言之,键是相同的,值是修改的。

很多初学者不适应hash***p中的读取顺序不是按照存储的顺序,所以总想按照宏的顺序读出来。我们可以使用LinkedHashMap类来实现这个目标。它使用一个双向链表来维护内部元素的关系,就像链表一样。示例:

public class Example19 { public static void ***in(String[] args) { //要想使得***p对象里的存入时的值与读取出来的值顺序一致,则需要使用linkedhash***p类 //内部维护一个双向链表 Map ***p = new LinkedHashMap();//使用linkedhash***p类就实现了存入与读取顺序一致 ***p.put("1","Ubuntu"); ***p.put("2","CentOS"); ***p.put("3","SunOS"); ***p.put("4","MacOS"); Set keySet = ***p.keySet();//取出***p对象里的键组成的*** Iterator it = keySet.iterator();//为什么是keySet调用迭代器,因为是把键取出后存入keySet对象里的 while (it.hasNext()){ Object key = it.next(); Object value = ***p.get(key); System.out.println(key+":"+value); } }}

因此,读取和存储的顺序是一致的。

Tree***p***也是键值对的映射关系,不允许有重复的键。内部是用二叉树原理实现的,所以密钥不能重复。它由一个根组成,分为两个子树,由左子树和右子树组成。左边的子树总是比右边的子树小。

public static void ***in(String[] args) { //TreeMap*** //是通过二叉树原理保证键的唯一性。TreeMap是按照某种顺序排列的 TreeMap t***p = new TreeMap(); t***p.put("1","java"); t***p.put("2","Linux"); t***p.put("3","MacOS"); t***p.put("4","Ubuntu"); Set keyset = t***p.keySet(); Iterator ior = keyset.iterator(); while (ior.hasNext()){ Object key = ior.next(); Object value = t***p.get(key); System.out.println(key+":"+value); } }

它读取元素的顺序与存储元素的顺序相同。因为数字是字符串类型,实现了Comparable接口,所以默认情况下会按自然顺序排序。

使用TreeMap***时,还可以自定义比较方法。下面的示例实现了一个自定义比较器。

public class Example21 { public static void ***in(String[] args) { /* * 实现自定义比较器,与二叉树***默认排序规则相反的排序 * */ TreeMap tm = new TreeMap(new MyComparator()); tm.put("1","JavaScript"); tm.put("2","java虚拟机"); tm.put("3","Linux Kernel"); Set keySet = tm.keySet(); Iterator it = keySet.iterator(); while (it.hasNext()){ Object key = it.next(); Object value = tm.get(key);//获得键对应的值 System.out.println(key+":"+value); } }}//实现自定义比较器class MyComparator implements Comparator { public int compare(Object obj1,Object obj2){ String id1 = (String) obj1; //把obj1强制转换为String类型 String id2 = (String) obj2; return id2.compareTo(id1);//把比较结果返回 }}

Jdk为我们预留了一个名为Comparator的接口,我们使用implements来实现这个接口。因为在java中,所有类的父类都是Object,默认继承。因此,***中的数据类型都被转换为对象类型。然后我们要做的就是把对象类型转换成字符串类型。然后使用compareTo方法进行比较,从而实现字典的逆序。

Properties是***p接口的实现类。hashtable类似于hashMap。Hashtable的线程是安全的,访问元素比较慢。Properties主要存储字符串类型的键和值。

public static void ***in(String[] args) { //Properties***是***p接口的一个实现类Hashtable与hashMap相似。 //hashtable的线程是安全的,存取元素时速度慢。 //Properties主要存储字符串类型的键和值 //按顺序存储的顺序读取结果 Properties p = new Properties(); p.setProperty("1","C");//写入Properties*** p.setProperty("2","JavaScript"); p.setProperty("3","Node.js"); /* * 通过调用propertyNames方法获得一个包含所有键的Enumeration对象, * 在遍历时调用getProperty方法获取值 * * */ Enumeration names = p.propertyNames();//获取Enumeration对象所有键的枚举 while (names.hasMoreElements()){ String key = (String) names.nextElement(); String value = (String) p.getProperty(key);//获取键对应的值 System.out.println(key+":"+value); } }

它主要用来写配置项,我上课的时候经常用到,比如Spring Boot。它有两个方法,getproperty()和setproperty(),用于读写配置。细节写在代码里。直接看代码就行了。

本文来自Rose情調※投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/482652.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 03-30
下一篇 03-30

相关推荐

  • 华为数据线接口有几种型号(华为数据线接口图片)

    科学创意工作室流行的通讯电子电器有很多种通讯接口,如此多的接口往往让很多消费者感到困惑。下面简单介绍一下各种常用接口,大家可以上下移动!I. Tpye A B C接口1.Tpye A接口(USB接口)Type-A是非常标准的USB母口,电脑主板和笔记本上都有,这样一公一母线就是传统的USB延长

    2023-07-25 17:04:01
    114 0
  • 视频接口类型 电脑主机视频接口图解

    一、视频信号接口视频监控线路类型介绍:根据资料,有两种类型:SYV和SYWV。绝缘层的物理材料结构是不同的。SYV是一种实心聚乙烯电缆。SYWV是一种高物理发泡电缆,物理发泡电缆的传输性能优于聚乙烯。(S & # 8211同轴电缆Y & # 8211聚乙烯–聚***。稳定的聚乙烯)按阻抗可分

    2023-07-22 20:19:01
    498 0
  • 车上hdmi接口有什么用 讲解hdmi接口和vga接口的区别

    现在很多液晶电视,笔记本,台式电脑的接口都标有HDMI的字样,所以很多朋友不知道HDMI是什么意思,也不知道HDMI是什么接口,有什么用。为了解决这类问题,本文将帮助您了解HDMI接口的相关知识。感兴趣的朋友可以看看这篇文章。HDMI这个词很多朋友可能并不陌生,因为在液晶电视

    2023-07-17 19:10:01
    998 0
  • 音频接口有哪几种 音频接口定义及类型图解

    当你安装专业音频设备的时候,面对各种类型的音频接口,难免会有点迷茫。接下来,边肖将为您介绍几种常见的音频接口,希望能在您安装设备或选择音频线时提供一些帮助。音频接口音频输入/输出接口:可以输入电脑、录像机等设备的音频信号。并通过自己的扬声器播放。您也可以通过

    2023-07-17 18:58:01
    519 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信