精华内容
下载资源
问答
  • 构造总的map结构

    2018-05-09 20:24:13
    构造总的map结构构造总的map结构构造总的map结构构造总的map结构
  • PB版本map结构对象

    2016-04-11 16:05:30
    与java map结构类似的map对象,用法也与java map结构类似,另外还扩展了一些PB自身特点的方法
  • 本文实例讲述了ES6 Map结构的应用。分享给大家供大家参考,具体如下: Map 数据结构类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构...
  • Go语言学习、Map结构

    千次阅读 2020-01-03 23:55:46
    前面我们学习了Go语言中的数组,切片类型。但是我们发现使用数组或切片存储的数据量如果...那就Map结构,也就是字典结构。 Go语言中的结构是由键和值构成的,与其他语言类似。以键值对的形式存在。 某个键(key)...

    前面我们学习了Go语言中的数组,切片类型。但是我们发现使用数组或切片存储的数据量如果比较大,那么通过下标来取出某个具体数据的时候,相对来说比较麻烦。

    我们在数组或是切片中取值时,往往需要遍历这个数组或切片。比较麻烦。

    那么有没有一种数据结构,能够帮我们快速的取出数据呢?那就Map结构,也就是字典结构。

    Go语言中的结构是由键和值构成的,与其他语言类似。以键值对的形式存在。

    某个键(key)都对应的一个值(value),如果要查询某个值,直接根据对应的键就可以查询出该值。

    注意,这里,键不能重复。必须唯一。

    一、map的定义与初始化

    package main
    
    import "fmt"
    
    func main() {
    	//Map定义与使用
    	//字典名 map[ keyType ] valueType
    	var m map[int] string
    	m = make(map[int] string, 1)
    	// map [key] key是一个基本数据类型。
    	// map 是自动扩容的。
    	m[1] = "啦啦啦"
    	m[2] = "哈哈哈"
    	fmt.Println(m)
    }

    结果:

    map[1:啦啦啦 2:哈哈哈]

    这里我们在创建的时候,创建了一个长度的map,但是你会发现,我们在给map中添加数据的时候,一样可以添加进去。

    这是因为,map这种数据结构,在go语言中,长度 是自动扩容的,并且两者始终保持相等。

    这里还要说一下,键的类型,必须是支持==和!=操作符的类型,切片、函数以及包含切片的结构类型不能作为字典的键,使用这些类型会造成编译错误。

    Map中的数据,是无序存储的。 

    package main
    
    import "fmt"
    
    func main() {
    	//Map定义与使用
    	//字典名 map[ keyType ] valueType
    	var m map[int] string
    	m = make(map[int] string, 1)
    	// map [key] key是一个基本数据类型。
    	// map 是自动扩容的。
    	m[1] = "啦啦啦"
    	m[2] = "哈哈哈"
    	m[3] = "哦哦哦"
    	m[4] = "啪啪啪"
    	fmt.Println(m)
    
    	//map中的值
    	for k, v := range m{
    		fmt.Println(k,v)
    	}
    }

    结果:

    map[1:啦啦啦 2:哈哈哈 3:哦哦哦 4:啪啪啪]
    1 啦啦啦
    2 哈哈哈
    3 哦哦哦
    4 啪啪啪

     Map在定义时需要注意,key是唯一的。另外一种定义方式:

    package main
    
    import "fmt"
    
    func main() {
    	m:= map[string] int {"哈哈": 1, "啦啦": 2, "啪啪": 3}
    	fmt.Println(m)
    }
    

    结果:

    map[哈哈:1 啦啦:2 啪啪:3]

    二、Map中的值:

    map中的值,可以直接循环打印,上面我们已经演示过了。

    还可以直接通过键输出值:

    package main
    
    import "fmt"
    
    func main() {
    	m:= map[string] int {"哈哈": 1, "啦啦": 2, "啪啪": 3}
    	fmt.Println(m["哈哈"])
    }

    结果:

    1
    

    如果在打印中,打印了没有出现的值,那么默认为空。

    判断键值是否在map中,如果存在,则打印对应的值,如果不存在,就打印key值不存在

    package main
    
    import "fmt"
    
    func main() {
    	m:= map[string] int {"哈哈": 1000, "啦啦": 2000, "啪啪": 3000}
    	//判断
    	v,ok := m["哈哈"]
    	if ok{
    		fmt.Println(v)
    	}else {
    		fmt.Println("key值不存在")
    	}
    }

    输出结果:

    1000
    

    三、删除Map中的元素

     delete(map,key)

    package main
    
    import "fmt"
    
    func main() {
    	m:= map[int] string {1:"111", 2:"222", 3:"333", 4:"444"}
    	//打印map m 的对应类型 复合类型
    	fmt.Printf("%T \n", m)
    	//删除元素
    	delete(m, 1)
    	fmt.Println(m)
    }

    打印结果:

    map[int]string 
    map[2:222 3:333 4:444]

    这里注意一下,我们在删除元素的时候,如果key不存在,也不会报错。

    delete(map,key),删除操作,没有返回值。删除也不会影响map顺序。因为本身map就是无序的

    四、Map作为函数参数

     map作为函数参数进行,传递,是地址传递,也叫引用传递

    package main
    
    import "fmt"
    
    func map_add(m map[int]string){
    	m[2] = "222"
    }
    
    func main() {
    	m:=make(map[int]string,1)
    	m[1] = "111"
    	//map 作为函数参数,是地址传递 (引用传递)
    	map_add(m)
    	fmt.Println(m)
    }

    结果:

    map[1:111 2:222]

    map可以在函数中添加数据,影响主调函数中实参的值

    map只有长度值,没有容量值,只能用len()求得长度,不能用cap()求容量。cap在切片中使用。

    特殊用法:

    m:=make(map[int][]int)

    上述这种用法,是map定义key值为int类型。value值为切片。

    m:=make(map[int][]struct)

    上述这种用法,是map定义key值为int类型。value值为结构体类型。

    展开全文
  • json字符串转为map结构,复杂json字符串转为map结构

    万次阅读 热门讨论 2017-09-06 20:38:07
    开发的时候,经常会遇到json转为Map的需求,简单的json还好处理,如果json比较复杂,转换后为Map嵌套结构,就比较难处理。比如:将下面的json字符串转为Map接口:   { "data": [ { "IR_SRCNAME...

    json转map通用方法

    开发的时候,经常会遇到json转为Map的需求,简单的json还好处理,如果json比较复杂,转换后为Map嵌套结构,就比较难处理。比如:将下面的json字符串转为Map接口:

     

    {
    "data": [
               {
                "IR_SRCNAME": "车主之家",
                    "IR_SITENAME": "车主之家",
                    "IR_AUTHORS": null,
                    "IR_URLTITLE": "2017年4月份高尔夫销量11798台, 同比下降20.24%",
                    "IR_URLNAME": "http://news.16888.com/a/2017/0521/8172148.html",
                    "IR_ABSTRACT": " 2017年4月份高尔夫销量11798台 ",
                    "IR_URLTIME": "2017/05/21 23:35:00",
                    "IR_HKEYBBSNUM": "18093721078864168420-0",
                    "IR_CHANNEL": "新闻_汽车新闻", 
                    "COMPANY_RISK_CONN": "汽车之家股份有限公司_财务风险\偿债能力\营运资本_18;",
                    "ZFM": "负面"
               }
        	],
            "path": "/cloud/wsu/queryByKeyword!get_by_fullname.action",
                    "rstcode": "0000",
                    "rstcount": 19476,
                    "cmpname": "汽车之家股份有限公司",
                    "shortname": "汽车之家",
                    "rstmsg": "查询成功"
    }

     

     

     

    看完发现,这个json字符串转为map后,应该是Map嵌套Map结构的。怎么办呢?

    这里提供一方法,可以当作工具类,只要json字符串没有问题,嵌套几层都可以。

    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject
    public class Json2Map {
    
        /**
         * 将json字符串转为Map结构
         * 如果json复杂,结果可能是map嵌套map
         * @param jsonStr 入参,json格式字符串
         * @return 返回一个map
         */
        public static Map<String, Object> json2Map(String jsonStr) {
            Map<String, Object> map = new HashMap<>();
            if(jsonStr != null && !"".equals(jsonStr)){
                //最外层解析
                JSONObject json = JSONObject.fromObject(jsonStr);
                for (Object k : json.keySet()) {
                    Object v = json.get(k);
                    //如果内层还是数组的话,继续解析
                    if (v instanceof JSONArray) {
                        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
                        Iterator<JSONObject> it = ((JSONArray) v).iterator();
                        while (it.hasNext()) {
                            JSONObject json2 = it.next();
                            list.add(json2Map(json2.toString()));
                        }
                        map.put(k.toString(), list);
                    } else {
                        map.put(k.toString(), v);
                    }
                }
                return map;
            }else{
                return null;
            }
        }
    }

     

     

    用上面这个方法处理完后,打印这个map,结果如下:

     

     

    {rstcount=19476, path=/cloud/wsu/queryByKeyword!get_by_fullname.action, 
    data=[{ZFM=负面, COMPANY_RISK_CONN=汽车之家股份有限公司_财务风险偿债能力营运资本_18;, IR_URLTIME=2017/05/21 23:35:00, IR_URLTITLE=2017年4月份高尔夫销量11798台, 同比下降20.24%, IR_SRCNAME=车主之家, IR_SITENAME=车主之家, IR_URLNAME=http://news.16888.com/a/2017/0521/8172148.html, IR_ABSTRACT= 2017年4月份高尔夫销量11798台 , IR_HKEYBBSNUM=18093721078864168420-0, IR_AUTHORS=null, IR_CHANNEL=新闻_汽车新闻}], 
    rstcode=0000, 
    cmpname=汽车之家股份有限公司, 
    shortname=汽车之家, 
    rstmsg=查询成功}

     

    可以看到结果是一个Map嵌套一个Map。可以把这个方法存起来,遇到json转Map时,直接使用就好了。

     

     

    注意:这里的json字符串中很多双引号,用eclipse开发,可能会涉及转义问题,但是idea就不用,把这个json传扔到idea里,直接就转义了这些双引号,如下:

     

    String jsonp = "{\n" +
                        "\"data\": [\n" +
                        "        {\n" +
                        "            \"IR_SRCNAME\": \"车主之家\",\n" +
                        "                \"IR_SITENAME\": \"车主之家\",\n" +
                        "                \"IR_AUTHORS\": null,\n" +
                        "                \"IR_URLTITLE\": \"2017年4月份高尔夫销量11798台, 同比下降20.24%\",\n" +
                        "                \"IR_URLNAME\": \"http://news.16888.com/a/2017/0521/8172148.html\",\n" +
                        "                \"IR_ABSTRACT\": \" 2017年4月份高尔夫销量11798台 \",\n" +
                        "                \"IR_URLTIME\": \"2017/05/21 23:35:00\",\n" +
                        "                \"IR_HKEYBBSNUM\": \"18093721078864168420-0\",\n" +
                        "                \"IR_CHANNEL\": \"新闻_汽车新闻\", \n" +
                        "                \"COMPANY_RISK_CONN\": \"汽车之家股份有限公司_财务风险\\偿债能力\\营运资本_18;\",\n" +
                        "                \"ZFM\": \"负面\"\n" +
                        "        }\n" +
                        "    ],\n" +
                        "        \"path\": \"/cloud/wsu/queryByKeyword!get_by_fullname.action\",\n" +
                        "                \"rstcode\": \"0000\",\n" +
                        "                \"rstcount\": 19476,\n" +
                        "                \"cmpname\": \"汽车之家股份有限公司\",\n" +
                        "                \"shortname\": \"汽车之家\",\n" +
                        "                \"rstmsg\": \"查询成功\"\n" +
                        "    }\n";

    上面代码直接复制使用就好,不用额外处理。
     

    依赖为参考:net.sf.json.JSONObject maven依赖

     

     

    展开全文
  • Map结构同样属于Java Collections Framework的知识范畴,但是代表Map结构的顶级接口java.util.Map并没有继承java.util.Collection接口。这是因为Map结构属于映射式容器,既是一个Key键对应一个Value值(所以称为键值...

    (接上文《源码阅读(14):Java中主要的Queue、Deque结构——PriorityQueue集合(下)》)

    1、概述

    1.1、Map结构和Set集合的关系

    为什么要先介绍Java中的主要Map结构呢?如果读者是从本专题第一篇文章开始阅读的话,那么就应该清楚目前我们整个专题还在介绍Java中java.util.Collection接口的注意要实现集合 ,具体来说就应该是List集合、Queue/Deque集合以及Set集合。那么List集合、Queue/Deque集合介绍完后,理所当然就应该开始介绍Set集合。下图为Java中重要的Set集合的构建体系:
    在这里插入图片描述
    是的,从最直观的讲解思路考虑,整个专题是应该按照这样的思路进行介绍。但事实上Java中重要的Set集合内部实现全部基于对应的Map<K , V>结构。举例来说,在早期Java中版本中广泛使用的HashSet集合其内部是一个HashMap,代码片段如下所示:

    public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable {
      // ......
      private transient HashMap<E,Object> map;
      // Dummy value to associate with an Object in the backing Map
      private static final Object PRESENT = new Object();
      /**
       * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has
       * default initial capacity (16) and load factor (0.75).
       */
      public HashSet() {
        map = new HashMap<>();
      }
      // ......
      public HashSet(int initialCapacity) {
        map = new HashMap<>(initialCapacity);
      }
      // ......
    }
    

    再例如Java中另一个Set集合TreeSet,其内部使用的是TreeMap结构。再例如线程安全的跳跃表结构ConcurrentSkipListSet,内部实际上使用的是ConcurrentSkipListMap。甚至,第三方类org.eclipse.jetty.util.ConcurrentHashSet内部也是使用的java.util.concurrent.ConcurrentHashMap。所以基本上可以说,如果搞清楚了Java中重要的Map结构实现,那么就搞清楚了Java中重要的Set集合实现。

    1.2、Map结构概述

    1.2.1、基本结构

    首先Map结构同样属于Java Collections Framework的知识范畴,但是代表Map结构的顶级接口java.util.Map并没有继承java.util.Collection接口。这是因为Map结构属于映射式容器,既是一个Key键对应一个Value值(所以称为键值对),且同一个容器中不能出现两个相同的Key键信息。

    An object that maps keys to values. A map cannot contain duplicate keys;each key can map to at most one value.
    在这里插入图片描述

    上图所示的Map主要结构体系中,我们将重点介绍java.util包中的TreeMap容器、HashMap容器和LinkedHashMap容器。其中TreeMap容器基于红黑树进行构造,HashMap容器和LinkedHashMap容器基于数组+链表+红黑树的复合结构进行构造,而后两中容器的区别仅体现在HashMap容器中的数组被替换成了链表。

    另外,ConcurrentHashMap容器和ConcurrentSkipListMap容器也是Map结构体系下重要的线程安全的容器,我们将在本专题后续的专门介绍java.util.concurrent包的文章中专门进行介绍。其中基于跳跃表结构进行构建的ConcurrentSkipListMap容器尤为重要。

    1.2.2、键值对定义方式Entry

    上文已经提到,Map容器中存储的是键值对,既是一个键信息和一个值信息的映射关系。Map容器中可以有成千上万的键值对信息,每一个键值对都使用Map.Entry<K , V>的定义进行存储——也就是说一个Map容器中可以有成千上万个Map.Entry接口的实例化对象

    在这里插入图片描述

    Map.Entry<K , V>接口的主要代码如下所示:

    public interface Map<K,V> {
      // ......
      interface Entry<K,V> {
        // 获取当前Entry表示的键值对的键信息
        K getKey();
        // 获取当前Entry表示的键值对的值信息
        V getValue();
        // 设定当前Entry表示的键值对的值信息
        V setValue(V value);
        // 比较两个键值对是否相同
        boolean equals(Object o);
        // 求得当前键值对的hash值
        int hashCode();
        // ......
      }
      // ......
    }
    

    实际上从JDK1.8+开始,Map.Entry接口中还有一些其它定义,这里为了讲解方便我们暂时不去涉及,后续的内容中会逐步进行说明。一般来说实现了Map接口的具体实现类,都会根据自己的结构特定实现Map.Entry接口。例如AbstractMap类中就有AbstractMap.SimpleEntry类实现了Map.Entry接口;HashMap类中就有HashMap.Node类实现Map.Entry接口;TreeMap类中就有TreeMap.Entry类实现Map.Entry接口……
    在这里插入图片描述
    这些Map.Entry接口的具体实现类,都根据自己存储键值对的特性做了不同的扩展,例如我们可以看一下TreeMap.Entry中的构造定义:

    public class TreeMap<K,V>
        extends AbstractMap<K,V>
        implements NavigableMap<K,V>, Cloneable, java.io.Serializable {
      // ......
      /**
       * Node in the Tree.  Doubles as a means to pass key-value pairs back to
       * user (see Map.Entry).
       */
      static final class Entry<K,V> implements Map.Entry<K,V> {
        K key;
        V value;
        Entry<K,V> left;
        Entry<K,V> right;
        Entry<K,V> parent;
        boolean color = BLACK;
        /**
         * Make a new cell with given key, value, and parent, and with
         * {@code null} child links, and BLACK color.
         */
        Entry(K key, V value, Entry<K,V> parent) {
          this.key = key;
          this.value = value;
          this.parent = parent;
        }
        // ......
      }
      // ......
    }
    

    使用键值对方式存储数据的java.util.TreeMap容器,内部所有的键值对构成一棵红黑树。也就是说代表每一个键值对的TreeMap.Entry需要记录当前树结点的双亲结点(父结点)、左儿子结点和右儿子结点,以及当前树结点的颜色。所以,读者可以在以上代码片段中看到这些属性的定义,我们将在后续章节详细介绍TreeMap容器。

    2、Map结构中重要的接口和抽象类

    为了便于读者更深入理解java.util包中的TreeMap容器、HashMap容器和LinkedHashMap容器,我们将首先讲解几个重要的上层抽象类和接口:java.util.Map接口、java.util.SortedMap接口、java.util.NavigableMap接口和java.util.AbstractMap抽象类。

    2.1、java.util.Map接口

    java.util.Map接口是Java Collection Framework(JCF)框架中,Map体系的顶层接口定义。它定义了Map体系最基本的操作功能——针对K-V键值对这种操作结构的最基本操作功能。例如:

    • 建立一个指定值与指定键的关联,也就是建立一个新的K-V关联。如果操作之前已经存在这样的键-值关联,那么新的值将会替换调原有的值,并且之前的值将会被返回:
    V put(K key, V value);
    
    • 该方法用于清除当前map容器中所有键-值映射关系。
    void clear();
    
    • 返回一个指定键映射的指定值,如果当前map容器中不存在这个建,则返回null。
    V get(Object key);
    
    • 返回当前map容器中存储的K-V映射数量,如果映射数据大于Integer.MAX_VALUE (也就是231-1),那么就返回Integer.MAX_VALUE
    int size();
    
    • 这是一个判定方法,判定当前map容器中是否至少存在一个K-V映射数据。如果存在则返回true;其它情况返回false
    boolean isEmpty();
    

    以下java.util.Map接口的方法列表,摘自JDK 1.8版本:
    在这里插入图片描述

    2.2、java.util.SortedMap接口

    java.util.Map接口中定义的各种键值对读写方法,并不保证键的顺序。举个例子来说,K1、K2和K3三个键通过Map接口提供的put(K ,V)方法被放入了容器,当它们在容器中不一定按照存入的顺序进行存储。

    但很多业务场景下我们却需要存储在map容器中的这些键按照一定的规则进行有序存储,这时我们可能就需要使用实现了SortedMap接口的具体类了。需要注意的是:这里所说的有序存储不一定是线性存储的,例如使用红黑树结构进行的有序存储。SortedMap接口提供了很多和顺序存储有关的方法,例如:

    • 既然SortedMap接口下的实现类可以将键信息按照一定规则进行有序存储,那么其中自然就会用到Comparator比较器。通过以下方法可以当前容器使用的比较器。
    Comparator<? super K> comparator()
    
    • 既然容器中键信息是有序存储的,那么就可以指定开始的键信息以及结束位的键信息,并返回一个承载前两者之间的键值对引用信息的新的SortedMap容器。注意,由于新的SortedMap容器中存储的是这些键值对信息的引用,所以对新的SortedMap容器中键值对的写操作将会反应在当前容器中,反之亦然。另外,如果指定的开始位置的键信息和指定的结束位置的键信息相同,那么将返回一个空集合。
    SortedMap<K,V> subMap(K fromKey, K toKey)
    
    • 指定一个键信息,以下方法将返回一个新的SortedMap容器,后者存储的所有键值对的键信息都小于当前指定的键信息。除此之外,新的SortedMap容器的操作特性和subMap()方法返回的新容器的操作特性一致。需要注意的是,如果指定的键信息并不在当前SortedMap容器中,那么该方法将抛出IllegalArgumentException异常。
    SortedMap<K,V> headMap(K toKey);
    
    • 指定一个键信息,以下方法将返回一个新的SortedMap容器,后者存储的所有键值对的键信息都大于或者等于当前指定的键信息。初次之外,新的SortedMap容器的操作特性和headMap()方法返回的新容器的操作特性一致。
    SortedMap<K,V> tailMap(K fromKey);
    
    • 以下方法将返回当前SortedMap容器中,经过Comparator比较器比较后,值最小的那个键信息。
    K firstKey();
    
    • 以下方法将返回当前SortedMap容器中,经过Comparator比较器比较后,值最大的那个键信息。
    K lastKey();
    

    下图展示的java.util.SortedMap接口中完整的方法定义:

    在这里插入图片描述

    下图展示了java.util.Map接口、java.util.SortedMap接口和java.util.NavigableMap接口的继承关系:
    在这里插入图片描述

    2.3、java.util.NavigableMap接口

    如果说SortedMap接口为有序的键值对存储定义了基本操作,那么NavigableMap接口就是将和“有序”相关的操作进行细化。它精确定义了诸如返回上一个键/键值对、下一个键/键值对、最小键/键值对、最大键/键值对的一系列操作。

    • 以下两个方法返回一个键值映射信息/键信息,这个被返回的信息满足这样的条件:首先它属于一个一定小于当前给定键的集合,其次它是这个集合中键值最大的。如果容器中没有入参key所代表的键值映射信息/键信息,则返回null。
    Map.Entry<K,V> lowerEntry(K key);
    
    K lowerKey(K key);
    
    • 以下两个方法返回一个键值映射信息/键信息,这个被返回的信息满足这样的条件:首先它属于一个一定小于当前给定键的集合,其次它是这个集合中键值最大的。如果不存在这样的键值对映射信息/键信息,则返回入参key所代表的键值对映射信息/键信息本身;如果容器中没有入参key所代表的键值映射信息/键信息,则返回null。
    Map.Entry<K,V> floorEntry(K key);
    
    K floorKey(K key);
    
    • 以下两个方法返回一个键值映射信息/键信息,这个被返回的信息满足这样的条件:首先它属于一个一定大于当前给定键的集合,其次它是这个集合中键值最小的。如果容器中没有入参key所代表的键值映射信息/键信息,则返回null。
    Map.Entry<K,V> higherEntry(K key);
    
    K higherKey(K key);
    
    • 以下两个方法返回一个键值映射信息/键信息,这个被返回的信息满足这样的条件:首先它属于一个一定大于当前给定键的集合,其次它是这个集合中键值最小的。如果不存在这样的键值对映射信息/键信息,则返回入参key所代表的键值对映射信息/键信息本身;如果容器中没有入参key所代表的键值映射信息/键信息,则返回null。
    Map.Entry<K,V> ceilingEntry(K key);
    
    K ceilingKey(K key);
    

    下图展示的java.util.NavigableMap接口中完整的方法定义:

    在这里插入图片描述

    ============
    (接下文 源码阅读(16):Java中主要的Map结构——HashMap集合)

    展开全文
  • js 实现存储Map 结构的数据

    千次阅读 2019-04-02 19:53:17
    js 实现存储Map 结构的数据 <script type="text/javascript"> function Map() { var struct = function(key, value) { this.key = key; this.value = value; } var put = function(key, value){ for (var i =...

    js 实现存储Map 结构的数据

    <script type="text/javascript">
    function Map() { 
    var struct = function(key, value) { 
    this.key = key; 
    this.value = value; 


    var put = function(key, value){ 
    for (var i = 0; i < this.arr.length; i++) { 
    if ( this.arr[i].key === key ) { 
    this.arr[i].value = value; 
    return; 


    this.arr[this.arr.length] = new struct(key, value); 


    var get = function(key) { 
    for (var i = 0; i < this.arr.length; i++) { 
    if ( this.arr[i].key === key ) { 
    return this.arr[i].value; 


    return null; 


    var remove = function(key) { 
    var v; 
    for (var i = 0; i < this.arr.length; i++) { 
    v = this.arr.pop(); 
    if ( v.key === key ) { 
    continue; 

    this.arr.unshift(v); 



    var size = function() { 
    return this.arr.length; 


    var isEmpty = function() { 
    return this.arr.length <= 0; 

    this.arr = new Array(); 
    this.get = get; 
    this.put = put; 
    this.remove = remove; 
    this.size = size; 
    this.isEmpty = isEmpty; 
    }
    </script>

    ====================================

    <script type="text/javascript">
    var map=new Map();
    map.put('h','hello');
    map.put('hw','world');
    console.log(map);
    </script>

    ====================================

    展开全文
  • String转换到Map结构

    万次阅读 2017-01-08 02:05:43
    最近工作中遇到一个问题,就是需要将一个Map , Object > 通过toString得到的字符串反转到Map,网上找了没有对应的相关的功能,因此自己写了一个
  • JS创建map结构以及map中的方法

    万次阅读 多人点赞 2018-06-22 16:30:00
    js新的数据结构创建map的时候网上有很多,但是有时候你会发现很多方法都不能使用,这里我简单写一写常用的以及怎样去查看map的哪些方法,靠人不如靠己,博客抄来抄去,看起来还浪费时间一般我创建的时候就用这两种就...
  • Dalvik虚拟机中RegisterMap结构解析

    千次阅读 2015-07-10 16:25:26
    Dalvik虚拟机中每一个方法都由一个称作Method的结构体来表示(包括JNI方法)。在这个结构体中,有一个指向所谓RegisterMap结构的指针: struct Method { ClassObject* clazz; u4 accessFlags; u2 methodIn
  • Java map结构通过value来追踪key

    千次阅读 2017-04-25 17:00:09
    Java中的map结构具有key-value结构 通过value来找到key 以下转载于 http://blog.csdn.net/zhaokuo719/article/details/7445770 public static void main(String[] args) {  // Map map = new ...
  • js中自定义键值对形式的Map结构

    千次阅读 2015-04-07 09:57:47
    js中模仿java中的Map结构,用以存储键值对 /** * 为Array对象添加remove方法,删除制定值得元素 * @param {String} 数组元素值 */ Array.prototype.remove = function(s) { for (var i = 0; i ; i++) { if (s...
  • JS构造Map结构

    千次阅读 2016-07-22 16:32:51
    //定义map function Map() { this.container = {}; } //将key-value放入mapMap.prototype.put = function(key,value){ try{ if(key!=null && key != "") this.contai
  • java将对象转为map结构

    千次阅读 2018-08-20 15:13:37
    方式1: 使用json的反序列化来实现转换,TypeReference可以明确的指定反序列化的类型 JSON.parseObject(JSON....Map<String,Object>>(){}); 方式2: 使用反射 public static Map<String, Obje...
  • MAP--复杂map结构的构造

    千次阅读 2013-10-21 15:11:34
    我的关键结构比如 struct{  int a;  int b;  int c; }s; 因为这三个数据是基本信息,可以唯一区别一个设备。拿这样一个数据结构作为索引就能找到每个设备。 我现在想这么用 map 因为map是二叉树,...
  • es6基本语法学习--遍历map结构

    千次阅读 2016-11-23 10:53:02
    var m=new Map(); // m.set("a",10); // m.set("a",20); // console.log(m); var a=["a"]; var b=["a"]; console.log(a==b); m.set(a,100); m.set(b,200); m.set(["a"],300); console.log(m); for(let val
  • js之从Map结构对象中取值

    万次阅读 2018-03-14 17:31:30
    &lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt; &lt;title&gt;&lt;/title&gt;&lt;script type="text/javascript"&gt; let x={ "...
  • ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。 只能接受数组,采用new的方式来实例化使用。 创建Set机构时,可以立即设置...
  • 但是在mybatis中没有直接查询返回map结果的接口(也许有,只是我不知道)。下面给出一种简易的方式能达到同样的目的。 一、定义一个辅助类,用于存储从数据库中查询的主键和属性值 package com.e...
  • 对List中的元素按日期分组,转为一个Map最近做一个银行流水导入的功能,有很多天交易时间的数据,需要... Map&lt;String, List&lt;FinBankImpItem&gt;&gt; resultMap = new HashMap&lt;String...
  • go语言中json转成map结构

    万次阅读 2015-02-05 16:14:59
    func (r *Requestbody) Json2map() (s map[string]interface{}, err error) {  var result map[string]interface{}  if err := json.Unmarshal([]byte(r.req), &result); err != nil {  return nil, err ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 693,225
精华内容 277,290
关键字:

map结构