对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);
原文地址:https://www.cnblogs.com/txbblog/p/10893850.html