java集合(6) Map

  1. map类最大的特点是Map的元素是以键值对的方式存在的,每一个键对应一个唯一的值,但是每一个值可以被多个键对应(也就是说键值是可以是多对一的关系)
  2. 单纯看键的话,键组成的集合和Set几个并没有什么区别,可以说Set就是值的集合为空的Map。
  3. HashMap是Map的典型实现类(Hashtable也是一个典型的实现类,但是应该少用它。)
  4. 以下是Map一些常用方法的示例
    //map集合就是存放“键值对”的集合,键与值是单向一对一的关系
    //键是不能重复,包括不可以有两个“空”的键,否则会被认为是同一个
    
    
    package Map;
    
    import java.util.HashMap;
    
    public class MapTest1 {
    
        public static void main(String args[]){
    
            HashMap hashMap = new HashMap();
    
            hashMap.put(null,"zbd" );
    //      这一句会被下面的一句“覆盖”
    
            hashMap.put(null, null);
    
            hashMap.put("a", "A");
    
            System.out.println(hashMap);
    //       依次输出map里的键值对
    
            System.out.println(hashMap.size());
    //       size()返回map里的键值对数目
    
            System.out.println(hashMap.keySet());
    //       keySet()返回所有键
    
    
            System.out.println(hashMap.get("a"));
    //        get(arg1)返回arg1对应的值
    
            System.out.println(hashMap.isEmpty());
    //        isEmpty()返回map是否是空map
    
            System.out.println(hashMap.entrySet());
    //        entrySet()返回所有值组成的集合
    
            System.out.println(hashMap.containsKey("a"));
    //        containsKey(arg1)返回是否包含arg1这个键
    
            System.out.println(hashMap.containsValue("A"));
    //        containsValue(arg1)返回是否包含arg1这个值
    
        }
    
    }
    //输出结果:
    //      {null=null, a=A}
    //      2
    //      [null, a]
    //      A
    //      false
    //      [null=null, a=A]
    //      true
    //      true
  5. 表明键值的对应关系是多对一
    package Map;
    
    import java.util.HashMap;
    
    public class MapTest2 {
    
        public static void main(String args[]){
    
            HashMap hashMap = new HashMap();
    
            Integer integer = new Integer(4);
    
            hashMap.put("i1", integer);
    
            hashMap.put("i2", integer);
    
    
    
        }
    
    
    }
    
  6. 介绍一下LinkedHashMap,LinkedHashMap采用双向链表来维护Key集合的次序,也就是说它可以“记住”集合添加元素的顺序,以下为代码示例
    //LinkedhashMap采用双向链表来维护key添加的次序
    
    
    package Map;
    
    import java.util.LinkedHashMap;
    
    public class LinkedHashMapTest {
    
        public static void main(String args[]){
    
            LinkedHashMap linkedHashMap = new LinkedHashMap();
    
            linkedHashMap.put("java1", "java1");
            linkedHashMap.put("java2", "java2");
            linkedHashMap.put("java3", "java3");
    
            for(Object key : linkedHashMap.keySet()){
                System.out.println(linkedHashMap.get(key));
            }
        }
    }
    //输出结果
    //        java1
    //        java2
    //        java3
    
    
  7. Properties类是HashMap的子类,它可以操作属性文件
    package Map;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.Properties;
    
    public class PropertiesTest {
    
        public static void main  (String args[]) throws Exception {
    
            Properties properties = new Properties();
    
            properties.setProperty("username", "java1");
    
            properties.setProperty("password", "java2");
    
            properties.store(new FileOutputStream("a.ini"), "comment line");
    //       将properties中的键值对保存到当前路径下的a.ini里去
            
            Properties properties1 = new Properties();
    
            properties1.setProperty("gender", "male");
    
            properties1.load(new FileInputStream("a.ini"));
    //       读取a.ini这个属性文件并且将properties1里的键值对追加到a.ini里去
            
            System.out.println(properties1);
        }
    }
    //输出结果
    //        {password=java2, gender=male, username=java1}
    //并且会在当前项目的目录下创建一个a.ini的属性文件,里边有上述键值对数据,内容如下
    //        #comment line
    //        #Thu Aug 02 20:23:49 CST 2018
    //        password=java2
    //        username=java1
    

猜你喜欢

转载自blog.csdn.net/weixin_39452731/article/details/81366366