当前位置: 首页 > news >正文

广州网站建设哪家比较好浦东新区做网站

广州网站建设哪家比较好,浦东新区做网站,网站数据库建设access,a站免费最好看的电影片推荐Collection集合框架集Java培训之Collection集合框架集MapMap概述Map与Collection并列存在。用于保存具有映射关系的数据:Key-ValueMap 中的 key 和 value 都可以是任何引用类型的数据Map 中的 key 不允许重复key 和 value 之间存在单向一对一关系#xff0c;即通过指定的 key …Collection集合框架集Java培训之Collection集合框架集MapMap概述Map与Collection并列存在。用于保存具有映射关系的数据:Key-ValueMap 中的 key 和 value 都可以是任何引用类型的数据Map 中的 key 不允许重复key 和 value 之间存在单向一对一关系即通过指定的 key 总能找到唯一的、确定的 value。Map接口的常用实现类HashMap、TreeMap、LinkedHashMap和Properties。HashMap是 Map 接口使用频率最高的实现类。允许使用null键和null值与HashSet一样不保证映射的顺序。Map的常用方法1、添加、删除操作Object put(Object key,Object value)Object remove(Object key)void putAll(Map t)void clear()2、元素查询的操作Object get(Object key)boolean containsKey(Object key)boolean containsValue(Object value)int size()boolean isEmpty()3、元视图操作的方法Set keySet()Collection values()Set entrySet() Map的遍历Collection集合的遍历1foreach2通过Iterator对象遍历Map的遍历不能支持foreach1分开遍历单独遍历所有key还可以根据key获取对应value 单独遍历所有value2成对遍历遍历的是映射关系Map.EntryMap.Entry是Map接口的内部接口。每一种Map内部有自己的Map.Entry的实现类在Map中存储数据实际上是将Key—-value的数据存储在Map.Entry接口的实例中再在Map集合中插入Map.Entry的实例化对象如图示public static void main(String[] args) {Map map new HashMap();map.put(“邢涛”, 60);map.put(“林明明”, 70);map.put(“田杰”, 80);map.put(“李铠”, 90);map.put(“李信”, 60); System.out.println(“map的所有key:”);Set keys map.keySet();//HashSetfor(Object key : keys){ System.out.println(key”-”map.get(key)); } System.out.println(“map的所有的value”);Collection values map.values();Iterator iter values.iterator();while(iter.hasNext()){ System.out.println(iter.next()); } System.out.println(“map所有的映射关系”); //映射关系的类型是Map.Entry类型它是Map接口的内部接口Set mappings map.entrySet();for(Object mapping : mappings){ //System.out.println(mapping);Map.Entry entry (Map.Entry)mapping; System.out.println(“key是” entry.getKey() “value是”entry.getValue()); } } Map的实现类1、HashMapHashMap 判断两个 key 相等的标准是两个 key 通过 equals() 方法返回 truehashCode 值也相等。HashMap 判断两个 value相等的标准是两个 value 通过 equals() 方法返回 true。HashMap线程不安全JDK1.8之前HashMap的内部存储结构其实是数组和链表的结合。当实例化一个HashMap时系统会创建一个长度为Capacity的Entry数组这个长度在哈希表中被称为容量(Capacity)在这个数组中可以存放元素的位置我们称之为“桶”(bucket)每个bucket都有自己的索引系统可以根据索引快速的查找bucket中的元素。每个bucket中存储一个元素即一个Entry对象但每一个Entry对象可以带一个引用变量用于指向下一个元素因此在一个桶中就有可能生成一个Entry链。而且新添加的元素作为链表的head。HashMap的扩容当HashMap中的元素越来越多的时候hash冲突的几率也就越来越高因为数组的长度是固定的。所以为了提高查询的效率就要对HashMap的数组进行扩容而在HashMap数组扩容之后最消耗性能的点就出现了原数组中的数据必须重新计算其在新数组中的位置并放进去这就是resize。那么HashMap什么时候进行扩容呢当HashMap中的元素个数超过数组大小(数组总大小length,不是数组中个数size)*loadFactor时就会进行数组扩容loadFactor的默认值为0.75这是一个折中的取值。也就是说默认情况下数组大小为16那么当HashMap中元素个数超过16*0.7512这个值就是代码中的threshold值也叫做临界值的时候就把数组的大小扩展为 2*1632即扩大一倍然后重新计算每个元素在数组中的位置而这是一个非常消耗性能的操作所以如果我们已经预知HashMap中元素的个数那么预设元素的个数能够有效的提高HashMap的性能。JDK1.8之后HashMap的内部存储结构其实是数组和链表/树的结合。当实例化一个HashMap时会初始化initialCapacity和loadFactor在put第一对映射关系时系统会创建一个长度为initialCapacity的Node数组这个长度在哈希表中被称为容量(Capacity)在这个数组中可以存放元素的位置我们称之为“桶”(bucket)每个bucket都有自己的索引系统可以根据索引快速的查找bucket中的元素。每个bucket中存储一个元素即一个Node对象但每一个Node对象可以带一个引用变量next用于指向下一个元素因此在一个桶中就有可能生成一个Node链。也可能是一个一个TreeNode对象每一个TreeNode对象可以有两个叶子结点left和right因此在一个桶中就有可能生成一个TreeNode树。而新添加的元素作为链表的last,或树的叶子结点。七上八下那么HashMap什么时候进行扩容和树形化呢当HashMap中的元素个数超过数组大小(数组总大小length,不是数组中个数size)*loadFactor时就会进行数组扩容loadFactor的默认值为0.75这是一个折中的取值。也就是说默认情况下数组大小为16那么当HashMap中元素个数超过16*0.7512这个值就是代码中的threshold值也叫做临界值的时候就把数组的大小扩展为 2*1632即扩大一倍然后重新计算每个元素在数组中的位置而这是一个非常消耗性能的操作所以如果我们已经预知HashMap中元素的个数那么预设元素的个数能够有效的提高HashMap的性能。当HashMap中的其中一个链的对象个数如果达到了8个此时如果capacity没有达到64那么HashMap会先扩容解决如果已经达到了64那么这个链会变成树结点类型由Node变成TreeNode类型。当然如果当映射关系被移除后下次resize方法时判断树的结点个数低于6个也会把树在转为链表。关于映射关系的key是否可以修改映射关系存储到HashMap中会存储key的hash值这样就不用在每次查找时重新计算每一个Entry或NodeTreeNode的hash值了因此如果已经put到Map中的映射关系再修改key的属性而这个属性又参与hashcode值的计算那么会导致匹配不上。HashSet的底层实现public class HashSetE ……{private transient HashMapE,Object map;private static final Object PRESENT new Object();public HashSet() {map new HashMap(); }public HashSet(int initialCapacity, float loadFactor) {map new HashMap(initialCapacity, loadFactor); }public HashSet(int initialCapacity) {map new HashMap(initialCapacity); }public IteratorE iterator() {return map.keySet().iterator(); }public int size() {return map.size(); }public boolean isEmpty() {return map.isEmpty(); }public boolean contains(Object o) {return map.containsKey(o); }public boolean add(E e) {return map.put(e, PRESENT)null; }public boolean remove(Object o) {return map.remove(o)PRESENT; }public void clear() {map.clear(); }}2、LinkedHashMapLinkedHashMap 是 HashMap 的子类与LinkedHashSet类似LinkedHashMap 可以维护 Map 的迭代顺序迭代顺序与 Key-Value 对的插入顺序一致3、TreeMapTreeMap存储 Key-Value 对时需要根据 key进行排序。TreeMap 可以保证所有的 Key-Value 对处于有序状态。TreeMap 的 Key 的排序自然排序TreeMap 的所有的 Key 必须实现 Comparable 接口而且所有的 Key 应该是同一个类的对象否则将会抛出 ClasssCastException定制排序创建 TreeMap 时传入一个 Comparator 对象该对象负责对 TreeMap 中的所有 key 进行排序。TreeMap判断两个key相等的标准两个key通过compareTo()方法或者compare()方法返回0。若使用自定义类作为TreeMap的key所属类需要重写equals()和hashCode()方法且equals()方法返回true时compareTo()方法应返回0。4、HashtableHashtable是个古老的 Map 实现类线程安全。与HashMap不同Hashtable 不允许使用 null 作为 key 和 value与HashMap一样Hashtable 也不能保证其中 Key-Value 对的顺序Hashtable判断两个key相等、两个value相等的标准与hashMap一致。5、PropertiesProperties 类是 Hashtable 的子类该对象用于处理属性文件由于属性文件里的 key、value 都是字符串类型所以 Properties 里的 key 和 value 都是字符串类型存取数据时建议使用setProperty(String key,String value)方法和getProperty(String key)方法 Map集合框架集
http://www.zqtcl.cn/news/3485/

相关文章:

  • 北京网站备案注销中心wordpress 内容 管理
  • wordpress来建站网页编程代码
  • 做网站运营需要学的东西盐山联通大厦 网站建设
  • 做ppt网站有哪些内容吗邢台做移动网站价格
  • app网站开发合同wordpress后台登陆地址
  • 适合服务行业做推广的网站做贷款网站
  • 开发网站公司多少钱wordpress中的template
  • 直播网站建设品牌团购模板网站
  • 卓越 网站深圳松岗做网站
  • 公司网站制作站制作电脑做服务器搭建网站
  • 微信公众号文章里好看的图片在哪个网站做建材建设行业网站
  • 成都网站开发技术喜迎二十大作文
  • 王者荣耀个人主页湖北短视频seo营销
  • 深圳傻瓜式网站建设公司好吗建设博客网站制作
  • 仿站小工具怎么用上海做网站收费
  • 南京网站开发南京乐识权威无锡网站推广$做下拉去118cr
  • 携程网站的会计工作怎么做wordpress 多人编辑器
  • 做dota2菠菜网站湖南网站排名优化公司
  • 查企业去哪个网站申请域名邮箱
  • 免费网站注册 建站网站建设需要哪些的ps
  • 怎样在阿里做网站苏州前几天网站建设
  • 为了 门户网站建设浅谈京东企业的电子商务网站建设
  • 长治网站建设费用专业定制网站建设团队
  • 网站主页建设格式alexa排名是什么意思
  • wordpress网站科学主题wordpress防f12
  • 东莞营销网站网站建设吕凡科技
  • 建设银行网站优点技术支持 随州网站建设
  • 免费网站建设协议免费建站的网站
  • 企业门户网站解决方案网站建设的用户体验
  • deal 网站要怎么做网站域名空间地址