网站建设商家,网站策划书3000,企业招聘网站哪个最好,国外的平面设计网站Map集合
Map接口的简介
Map用于保存具有映射关系的数据#xff0c;Map里保存着两组数据#xff1a;key和value#xff0c;它们都可以使任何引用类型的数据#xff0c;但key不能重复。所以通过指定的key就可以取出对应的value。
Map 没有继承 Collection 接口#xff0c…Map集合
Map接口的简介
Map用于保存具有映射关系的数据Map里保存着两组数据key和value它们都可以使任何引用类型的数据但key不能重复。所以通过指定的key就可以取出对应的value。
Map 没有继承 Collection 接口 Map 提供 key 到 value 的映射可以通过“键”查找“值”。一个 Map 中不能包含相同的 key 每个 key 只能映射一个 value 。 |------Map接口键值对的集合双列集合
|----------HashMap(接口实现类 没有同步 线程不安全)
|----------Hashtable接口实现类同步线程安全
|----------LinkedHashMap(实现类双向链表和哈希表实现)
|----------TreeMap(实现类 红黑树对所有的key进行排序)
Map HashMap 非线程安全基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()]为了优化HashMap空间的使用您可以调优初始容量和负载因子。 TreeMap非线程安全基于红黑树实现。TreeMap没有调优选项因为该树总处于平衡状态。 HashTable是同步的这个类中的一些方法加入了synchronized关键字保证了HashTable中的对象是线程安全的 LinkedHashMap需要维护元素的插入顺序性能低于HashMap但在迭代访问元素时有很好的性能但他以链表方式类维护内部顺序的。
HashMap实现类
1、基于哈希表的 Map 接口的实现便于提高查询的效率。2、此实现提供所有可选的映射操作并允许使用 null 值和 null 键。3、此类不保证映射的顺序特别是它不保证该顺序恒久不变。4、基于线程非同步适用于单线程的环境中。//HashMap实现类public static void test1(){ Map map new HashMap();//添加元素map.put(a,10);map.put(b,20);map.put(c,30);map.put(d,40);map.put(null, null);//重复的key会发生覆盖map.put(a, 100);//注意List 和 Set集合最终输出结果的时候显示的是[元素1元素2.......]//{nullnull, d40, b20, c30, a100}-------- 1、map的元素是key-value格式 //2、发现是无序的 3、允许null键 和 null值 ; 4、重复的key是会发生覆盖的System.out.println(map);
}Map操作API
Map容器添加元素Map容器通过键取值Map容器中的索引(包含)Map容器中通过一个键移除一个值containsKey
//找对应的键key有对应的key返回true没有则返回false
boolean containsKey(Object key);containsValue
//找对应的值value有则返回true没有则返回false
boolean containsValue(Object value);isEmpty
//判断map集合是否有数据有则返回false没有则返回true
boolean isEmpty();keySet
//获取map集合中所有的键key
SetK keySet();putAll
//将map集合添加该集合中
void putAll(Map? extends K, ? extends V m);remove
//根据键key移除数据
V remove(Object key);remove
//根据键key和值value移除数据移除成功返回true移除失败返回false
default boolean remove(Object key, Object value)clone
//从此HashMap中实例一份副本
public Object clone()//演示Map操作的API方法----1public static void test2(){Person person new Person(zhangsan,30);Map map new HashMap();//添加元素(key是Object类型value也是Object类型)map.put(a,admin);map.put(b, guest);map.put(3, 100);map.put(4, 1000);map.put(new Date(), new Date());map.put(obj,person);map.put(person, person);System.out.println(map);//获取指定的元素值---通过key来获取Object value1 map.get(3);System.out.println(value1);value1 map.get(obj);System.out.println(value1);//索引包含可以检测key 也可以检测valueboolean is map.containsKey(a);System.out.println(is);//true//针对key使用的是自定义的类型的时候进行检测必须要是同一个对象才可以。is map.containsKey(person);System.out.println(is);is map.containsValue(person);System.out.println(is);//通过key移除指定的元素Object obj map.remove(obj);//返回的就是被删除的对象Person [namezhangsan, age30]System.out.println(obj);//{3100, 41000, bguest, aadmin, Person [namezhangsan, age30]Person [namezhangsan, age30], Tue Jan 11 15:33:33 CST 2022Tue Jan 11 15:33:33 CST 2022}System.out.println(map);} Map容器转化为Set容器(Entry对的集合)
Set set map.entrySet();Map容器中键转化为Set容器(键的集合)
Set set map.keySet();Map容器中值转化为Set容器( 值的集合)
Collection c map.values();Map容器中其他基本判断和操作map.isEmpty();map.clear();map.size();// 演示Map操作的API方法--2public static void test3() {Map map new HashMap();// 添加元素(key是Object类型value也是Object类型)map.put(a, admin);map.put(b, guest);map.put(3, 100);map.put(4, 1000);//将所有的Entry对转换到一个Set集合中Set entrySet map.entrySet();//[3100, 41000, bguest, aadmin]--------显示的是[]格式不是{}格式。System.out.println(entrySet);//key-value 专业类型Entry对//将key全部转换为一个set集合Set keySet map.keySet();//[3, 4, b, a]System.out.println(keySet);//可以直接针对keySet这个集合进行迭代Iterator keyIts keySet.iterator();while(keyIts.hasNext()){Object key keyIts.next();System.out.println(key);}//将所有的值获取Collection coll map.values();//[100, 1000, guest, admin]System.out.println(coll);//进行迭代展现coll.iterator();/*** 注意* 我们发现在Map集合中是没有提供迭代的方法因为Map这种结构是无法直接进行迭代操作的*///集合中的常规操作map.isEmpty();map.size();map.clear();}提示 通过以上的Map所有的API的学习我们发现在Map结构的操作中主要都是基于key键来实现的 Hashtable实现类
1、此类实现一个哈希表该哈希表将键映射到相应的值key-value模式。2、键或值不允许为null。3、Hashtable 是基于线程同步的适用于多线程的环境中。4、Hashtable和HashMap的API几乎是一样的。public static void test1(){Hashtable map new Hashtable();map.put(a,15);map.put(b,17);map.put(c,18);map.put(d,10);//java.lang.NullPointerException,不允许存在null键和null值的//map.put(null, null); 错误的//同HashMap比较起来唯独多出的一个方法Enumeration en map.elements();//en枚举中保存的是所有的value值等同于 map.values();while(en.hasMoreElements()){Object obj en.nextElement();System.out.println(obj);}//其余的API都是一样的} LinkedHashMap实现类
1、LinkedHashMap实现类是HahsMap的子类2、LinkedHashMap底层使用数据结构是链表 和 hash算法3、具备了顺序的维护针对插入、删除做了效率的提升查询的效率也较高4、LinkedHashMap也是基于线程非同步的适用于单线程的环境中5、LinkedHashMap 和 HashMap的API是完全一致的//LinkedHashMap中的API
public static void test1(){LinkedHashMap map new LinkedHashMap();//LinkedHashMap和 HashMap操作的API是完全一致的map.put(a,admin1);map.put(b,admin2);map.put(c,admin3);map.put(d,admin4);map.put(null, null);//{aadmin1, badmin2, cadmin3, dadmin4, nullnull} ------ 维护了插入时的顺序,同时允许null键和null值;System.out.println(map);}TreeMap实现类
1、TreeMap底层的数据结构是基于二叉树红黑树的结构2、针对TreeMap集合中的key是进行排序的处理的3、TreeMap是基于线程非同步的适用于单线程的环境中4、TreeMap实现类中增添了不少的方法但是对于我们使用来说主要依赖的是排序功能所以增添的这些方法我们了解就可以了//Comparable:个接口对实现它的每个类的对象强加了一个总的顺序。
public class Person extends Object implements Comparable{private String name;private Integer age;public Person(){}public Person(Integer age){this.age age;}public Person(String name,Integer age){this.name name;this.age age;}public Person(Integer age,String name){this.name name;this.age age;}public String getName(){return name;}public void setName(String name){this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}Overridepublic String toString() {return name,age;}Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;Person person (Person) o;return Objects.equals(name, person.name) Objects.equals(age, person.age);}Overridepublic int hashCode() {return Objects.hash(name, age);}Overridepublic int compareTo(Object o) {if (o instanceof Person){Person person (Person) o;// return person.age - this.age;//从大到小return person.name.hashCode() - this.name.hashCode();}return 0;}
}public static void main(String[] args) {TreeMap treeMap new TreeMap();Person person new Person(1,张三);Person person2 new Person(9,李四);Person person3 new Person(3,王五);Person person4 new Person(19,赵六);Person person5 new Person(2,唐七);treeMap.put(person,z);treeMap.put(person2,z);treeMap.put(person3,z);treeMap.put(person4,z);treeMap.put(person5,z);System.out.println(treeMap);}
}
文章转载自: http://www.morning.fpczq.cn.gov.cn.fpczq.cn http://www.morning.dhnqt.cn.gov.cn.dhnqt.cn http://www.morning.rfpq.cn.gov.cn.rfpq.cn http://www.morning.rwyd.cn.gov.cn.rwyd.cn http://www.morning.wyctq.cn.gov.cn.wyctq.cn http://www.morning.rpwm.cn.gov.cn.rpwm.cn http://www.morning.lcxdm.cn.gov.cn.lcxdm.cn http://www.morning.ntdzjx.com.gov.cn.ntdzjx.com http://www.morning.glxmf.cn.gov.cn.glxmf.cn http://www.morning.jhrlk.cn.gov.cn.jhrlk.cn http://www.morning.nrydm.cn.gov.cn.nrydm.cn http://www.morning.jqhrk.cn.gov.cn.jqhrk.cn http://www.morning.xrksf.cn.gov.cn.xrksf.cn http://www.morning.ttryd.cn.gov.cn.ttryd.cn http://www.morning.ywpwg.cn.gov.cn.ywpwg.cn http://www.morning.bgxgq.cn.gov.cn.bgxgq.cn http://www.morning.ktfbl.cn.gov.cn.ktfbl.cn http://www.morning.lxfqc.cn.gov.cn.lxfqc.cn http://www.morning.jwxnr.cn.gov.cn.jwxnr.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.dzpnl.cn.gov.cn.dzpnl.cn http://www.morning.ldzxf.cn.gov.cn.ldzxf.cn http://www.morning.wmfh.cn.gov.cn.wmfh.cn http://www.morning.xhgxd.cn.gov.cn.xhgxd.cn http://www.morning.tfpqd.cn.gov.cn.tfpqd.cn http://www.morning.lgtcg.cn.gov.cn.lgtcg.cn http://www.morning.yntsr.cn.gov.cn.yntsr.cn http://www.morning.rkck.cn.gov.cn.rkck.cn http://www.morning.xdmsq.cn.gov.cn.xdmsq.cn http://www.morning.qscsy.cn.gov.cn.qscsy.cn http://www.morning.mwzt.cn.gov.cn.mwzt.cn http://www.morning.rryny.cn.gov.cn.rryny.cn http://www.morning.yrjhr.cn.gov.cn.yrjhr.cn http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn http://www.morning.tdgwg.cn.gov.cn.tdgwg.cn http://www.morning.hjjkz.cn.gov.cn.hjjkz.cn http://www.morning.bwttj.cn.gov.cn.bwttj.cn http://www.morning.mcjyair.com.gov.cn.mcjyair.com http://www.morning.jfcbz.cn.gov.cn.jfcbz.cn http://www.morning.dwhnb.cn.gov.cn.dwhnb.cn http://www.morning.snkry.cn.gov.cn.snkry.cn http://www.morning.xprq.cn.gov.cn.xprq.cn http://www.morning.dlhxj.cn.gov.cn.dlhxj.cn http://www.morning.yprjy.cn.gov.cn.yprjy.cn http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn http://www.morning.mjyrg.cn.gov.cn.mjyrg.cn http://www.morning.nhbhc.cn.gov.cn.nhbhc.cn http://www.morning.trsmb.cn.gov.cn.trsmb.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.xdqrz.cn.gov.cn.xdqrz.cn http://www.morning.bpncd.cn.gov.cn.bpncd.cn http://www.morning.rbxsk.cn.gov.cn.rbxsk.cn http://www.morning.zcmpk.cn.gov.cn.zcmpk.cn http://www.morning.syfty.cn.gov.cn.syfty.cn http://www.morning.bnpcq.cn.gov.cn.bnpcq.cn http://www.morning.rdng.cn.gov.cn.rdng.cn http://www.morning.ltzkk.cn.gov.cn.ltzkk.cn http://www.morning.gjsjt.cn.gov.cn.gjsjt.cn http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn http://www.morning.wdqhg.cn.gov.cn.wdqhg.cn http://www.morning.mdfxn.cn.gov.cn.mdfxn.cn http://www.morning.tpqzs.cn.gov.cn.tpqzs.cn http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.qhkdt.cn.gov.cn.qhkdt.cn http://www.morning.hmktd.cn.gov.cn.hmktd.cn http://www.morning.nqmkr.cn.gov.cn.nqmkr.cn http://www.morning.frllr.cn.gov.cn.frllr.cn http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn http://www.morning.ltrms.cn.gov.cn.ltrms.cn http://www.morning.ndxrm.cn.gov.cn.ndxrm.cn http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn http://www.morning.qlpq.cn.gov.cn.qlpq.cn http://www.morning.jczjf.cn.gov.cn.jczjf.cn http://www.morning.lchtb.cn.gov.cn.lchtb.cn http://www.morning.ccyjt.cn.gov.cn.ccyjt.cn http://www.morning.zyslyq.cn.gov.cn.zyslyq.cn http://www.morning.jrbyz.cn.gov.cn.jrbyz.cn http://www.morning.zlchy.cn.gov.cn.zlchy.cn http://www.morning.dshkp.cn.gov.cn.dshkp.cn http://www.morning.ngmjn.cn.gov.cn.ngmjn.cn