首页 > 作文

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

更新时间:2023-04-05 04:12:58 阅读: 评论:0

java里的map接口和python里的map函数完全不同。虽然都具有映射关系,但是java的map接口更贴近字典和集合这两个引用数据类型。这个接口是一个双列集合它的元素是由键和值组成的,也就是keys和values。这个接口有两个实现类:hashmap和treemap。hashmap内部维护一个hash顺序,所以和我们宏观里看到的顺序不太一样。下例是把这个集合里的所有的值遍历出来。

public class example18 {    public static void main(string[] args) {        //直接获取map里的值        //map存储的值是collection集合        map map = new hashmap();        map.put("1","javascript");        map.put("2","linux");        map.put("3","unix");        collection values = map.values();//把map对象里的值取出,转换成collection集合类        iterator it = values.iterator();        while (it.hasnext()){            object value = it.next();            system.out.println(value);        }    }}

这里是通过一个java的迭代器把map里的所有元素迭代出来。这里的get方法是根据输入的键返回对应的值。这里是不允许出现重复的元素,如果输入了相同的键值对,则视为对该键对应的值修改。也就是如下例:

map.put("3","macos");

也就是把键为3的值修改了。简而言之就是键相同,值修改。

很多初学者不适应hashmap里的读取顺序不是按照存入顺序读出来的,所以总想按照宏观的顺序读取出来,我们可以使用linkedhashmap类实现这一目的。它是用双向链表来维护内部dnf称号薄元素的关系,与linkedlist一样。如下例:

public class example19 {    public static void main(string[] args) {        //要想使得map对象里的存入时的值与读取出来的值顺序一致,则需要使用linkedhashmap类        //内部维护一个双向链表        map map = new linkedhashmap();//使用linkedhashmap类就实现了存入与读取顺序一致        map.put("1","ubuntu");        map.put("2","centos");        map.put("3","sunos");        map.put("4","macos");        t keyt = map.keyt();//取出map对象里的键组成的集合        iterator it = keyt.iterator();//为什么是keyt调用迭代器,因为是把键取出后存入keyt对象里的        while (it.hasnext()){            object key = it.next();            object value = map.get(key);            system.out.println(key+":"+value);        }    }}

这样就是实现了读取与存放顺序一致了。

treemap集合也是存储键值对映射关系,不允许出现重复的键,内部是通过二叉树原理实现的,所以就可以实现键不重复。它是由一个根组成的,往下划分两个子树,由左子树和右子树组成,左子树总是小于右子树。

public static void main(string[] args) {        //treemap集合        //是通过二叉树原理保证键的唯一性。treemap是按照某种顺序排列的        treemap tmap = new treemap();        tm送花祝福语ap.put("1","java");        tmap.put("2","linux");        tmap.put("3","macos");        tmap.put("4","ubuntu");        t keyt = tmap.keyt();        iterator ior = keyt.iterator();        while (ior.hasnext()){            object key = ior.next();            object value = tmap.get(key);            system.out.println(key+":"+value);        }    }

它读取的元素的顺序和存储的顺序一致。因为编号是string类型,string类型实现了comparable接口,因此默认会按照自然顺序进行排序。

当使用treemap集合时,也可以自定义比较法。下面的例子就实现了自定义比较器。

public class example21 {知识转化    public static void main(string[] args) {        /*        * 实现自定义比较器,与二叉树集合默认排序规则相反的排序        * */        treemap tm = new treemap(new mycomparator());        tm.put("1","javascript");        tm.put("2","java虚拟机");        tm.put("3","linux kernel");        t keyt = tm.keyt();        iterator it = keyt.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 i阴阳师现世d2.compareto(id1);//把比较结果返回    }}

jdk帮我们预留了一个接口叫comparator,我们使用implements实现这个接口。因为在java里所有的类的父类都是object是默认继承的。所以在集合中的数据类型都转成object类型。那么我们要做的就是把object类型转译成string类型。然后使用compareto方法进行比较,这样就实现了字典逆序。

properties集合是map接口的一个实现类hashtable与hashmap相似,hashtable的线程是安全的,存取元素时速度慢。properties主要存储字符串类型的键和值。

public static void main(string[] args) {        //properties集合是map接口的一个实现类hashtable与hashmap相似。        //hashtable的线程是安全的,存取元素时速度慢。        //properties主要存储字符串类型的键和值        //按顺序存储的顺序读取结果        properties p = new properties();        p.tproperty("1","c");//写入properties集合        p.tproperty("2","javascript");        p.tproperty("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()和tproperty()这两个方法,用于读写配置。再详细的就在代码里写的很完备了,直接看代码就可以了。

本文发布于:2023-04-05 04:12:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/46cbb7fa262045aa5057986dde2da0f9.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:map接口的实现类(详解java常用工具类).doc

本文 PDF 下载地址:map接口的实现类(详解java常用工具类).pdf

上一篇:梦见雪
下一篇:返回列表
标签:子树   顺序   接口   类型
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图