zoukankan      html  css  js  c++  java
  • 对JAVA集合中Map的简单理解

    1.主要实现类:

      HashMap(无序,底层哈希表结构,保证键唯一,需要重写键对应类的hashCode和equals方法)、

      LinkedHashMap(有序,底层哈希表结构+链表,哈希表保证键的唯一,链表保证元素的有序,需要重写键对应类的hashCode和equals方法)、

      IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap、Hashtable、Properties

    2.Map集合的每一个元素都是成对存在的。Map<K,V>两个泛型,K键,V值,K和V可以相同,也可不同。K是唯一的,V可以重复

    主要方法

    增改:V put(K key, V value):向集合中添加键值对,如何键重复,覆盖之间的整个键值对,并返回被覆盖的键值对的值

    删:V remove(OBject key):根据键从map集合中删除键值对,返回被覆盖的键值对的值

    查:V get(K key):根据键从map集合中找到唯一对应的值

    其他:int size();boolean isEmpty();boolean containsKey(Object key);boolean containsValue(Object value);void clear();

    遍历

    map的遍历主要通过keyset()和entryset()这两个方法,利用增强for循环和迭代器进行遍历

    keyset():获取到集合中的每个键,通过以键找值的方法遍历

    entryset():获取到集合中的每个键值对对象,通过键值对对象获取到键和值

      增强for循环遍历:

       keyset:

            for (String key : map.keySet()) {
                System.out.println(map.get(key));            
            }

      entrySet:

            //entryset() Entry是map中的内部接口,在map创建了一个Set集合( entrySet())保存键值对对象
            for (Map.Entry<String, String> entry : map.entrySet()) {        
                System.out.println(entry.getKey()+":"+entry.getValue());        
            }

      迭代器遍历:

         keyset:

            Iterator<String> it = map.keySet().iterator();
            while(it.hasNext())
            {
                String key = it.next();
                System.out.println(key+":"+map.get(key));
            }

      entrySet:

            Iterator<Map.Entry<String, String>> it2 =map.entrySet().iterator();
            while(it2.hasNext())
            {
                Map.Entry<String, String> entry=it2.next();
                System.out.println(entry.getKey()+":"+entry.getValue());  
            }

    Properties

    1.properties是Map中很重要的一个集合

    2.Properties是一个持久的属性集,所谓持久 就是 它具有自己写数据到文件的方法

    3.Properties是没有泛型,泛型固定为String 

    4.Properties类,具有Map接口的一切方法,还有具有一些自己特有的方法::

              public String getProperty(String key)用指定的键在此属性列表中搜索属性的值,功能和Map中的get是一样

              public Object setProperty(String key, String value);添加键值对,功能和Map的put方法是一样

              public Set<String> stringPropertyNames()://和Map中的keySet方法是一样

    5.Properties具有持久化到文件的功能

              store();//保存数据到文件,实际上不是保存到文件 而是写入到流中,由流写到文件

              load();//从文件中加载数据,实际上不是直接加载文件,而是加载流中的数据,而流的数据是从该文件中读取的

    6.Properties本质上是一个Map集合

    eg:

    Properties遍历

            Properties pr = new Properties();
            pr.setProperty("001", "苹果");
            pr.setProperty("003", "华为");
            pr.setProperty("002", "小米");        
            Set<String> prkey = pr.stringPropertyNames();        
            for (String ps : prkey) {            
                System.out.println(ps+":"+pr.getProperty(ps));
            }

    Properties持久化数据到文件中

    pr.store(new FileWriter("study.properties"), "");
    

    Properties读取文件

            Properties pr2 =new Properties();
            pr2.load(new FileReader("study.properties"));
            System.out.println(pr2);
  • 相关阅读:
    airtest-selenium
    window下使用Redis Cluster部署Redis集群
    调用webservice进行身份验证
    ETL数据从sqlserver到mysql之间迁移
    Sqlserver调用api
    EXCEL导入数据到SQLSERVER
    博客园开通的第一天
    Visual Studio 2017 离线安装包
    WPF学习笔记1---初接触
    Visual Studio 2008 + ObjectARX2012环境配置
  • 原文地址:https://www.cnblogs.com/txbblog/p/10893850.html
Copyright © 2011-2022 走看看