• java map


    http://blog.csdn.net/itlwc/article/details/10155669

     

    Java - Map

     分类:
     
     

    目录(?)[+]

     

    Map层次结构


    Map

    [plain] view plain copy
     
    1. 实现类  
    2.     HashMap,LinkedHashMap,Hashtable  
    3. 子接口  
    4.     SortedMap  
    5.     实现类  
    6.         TreeMap  
    7. 映射集,键值集合  
    8. Map增加对象时,如果key值在Map已经存在,将会替换原先value值   
    9. Map里面的key值是不能重复的,value值可以重复  
    10. Map的泛型不可以是基本数据类型,比如Map<int,int>报错  

    Map常用方法

    [java] view plain copy
     
    1. package com.itlwc;  
    2.   
    3. import java.util.HashMap;  
    4. import java.util.Map;  
    5.   
    6. public class Test {  
    7.     public static void main(String[] args) {  
    8.         Map map = new HashMap();  
    9.         // 从此映射中移除所有映射关系  
    10.         map.clear();  
    11.         // 将指定的值与此映射中的指定键相关联  
    12.         map.put("a", "lwc");  
    13.         map.put("b", "nxj");  
    14.         // 从指定映射中将所有映射关系复制到此映射中  
    15.         map.putAll(new HashMap());  
    16.         // 如果存在此键的映射关系,则将其从映射中移除  
    17.         map.remove("b");  
    18.         // 返回此映射中的键-值映射关系数  
    19.         map.size();  
    20.         // 如果此映射未包含键-值映射关系,则返回 true  
    21.         map.isEmpty();  
    22.         // 返回此映射中映射到指定键的值  
    23.         map.get("a");  
    24.         // 如果此映射包含指定键的映射关系,则返回 true  
    25.         map.containsKey("a");  
    26.         // 如果此映射为指定值映射一个或多个键,则返回 true  
    27.         map.containsValue("nxj");  
    28.         // 返回此映射中包含的映射关系的 set 视图  
    29.         map.entrySet();  
    30.         // 返回此映射中包含的键的 set 视图  
    31.         map.keySet();  
    32.         // 比较指定的对象与此映射是否相等  
    33.         map.equals(new HashMap());  
    34.         // 返回此映射的哈希码值  
    35.         map.hashCode();  
    36.         // 返回此映射中包含的值的 collection 视图  
    37.         map.values();  
    38.     }  
    39. }  

    遍历Map 获取Map值的方法

    [java] view plain copy
     
    1. package com.itlwc;  
    2.   
    3. import java.util.Collection;  
    4. import java.util.HashMap;  
    5. import java.util.Iterator;  
    6. import java.util.Map;  
    7. import java.util.Set;  
    8.   
    9. public class Test {  
    10.     public static void main(String[] args) {  
    11.         Map map = new HashMap();  
    12.         map.put("a", "lwc");  
    13.         map.put("b", "nxj");  
    14.         // 方法一:  
    15.         Set set = map.keySet();  
    16.         Iterator ite1 = set.iterator();  
    17.         while (ite1.hasNext()) {  
    18.             String key = (String) ite1.next();  
    19.             String value = (String) map.get(key);  
    20.             System.out.println(key + ":" + value);  
    21.         }  
    22.         // 方法二:  
    23.         Set<Map.Entry> set1 = map.entrySet();  
    24.         Iterator<Map.Entry> ite2 = set1.iterator();  
    25.         while (ite2.hasNext()) {  
    26.             Map.Entry entry = (Map.Entry) ite2.next();  
    27.             String key = (String) entry.getKey();  
    28.             String value = (String) entry.getValue();  
    29.             System.out.println(key + ":" + value);  
    30.         }  
    31.         // 获取map中所有值对象的Collection集合  
    32.         Collection collection = map.values();  
    33.         for (Object c : collection) {  
    34.             String value = (String) c;  
    35.             System.out.println("值为: " + value + ",长度为 " + value.length());  
    36.         }  
    37.     }  
    38. }  
    39. /* 
    40. 打印结果: 
    41.     b:nxj 
    42.     a:lwc 
    43.     b:nxj 
    44.     a:lwc 
    45.     值为: nxj,长度为 3 
    46.     值为: lwc,长度为 3 
    47. */  

    HashMap

    [plain] view plain copy
     
    1. HashMap和ArrayList是一个时代的产物  
    2. 既不是Ordered也不是Sorted,该类通过对键计算哈希码来决定值的存储,  
    3.     不保证键的存储顺序,HashMap允许键值为null,但只能出现一次  
    4. 构造方法  
    5.     public HashMap()  
    6.         初始容量为16  
    7.     public HashMap(Map m)  

    Hashtable

    [plain] view plain copy
     
    1. HashTable和Vector是一个时代的产物,Hashtable对元素操作的方法为同步方法,  
    2.     同一时刻只能有一个线程访问,没有特殊需求不使用  
    3. 不允许null键的存在  
    4. 构造方法  
    5.     public Hashtable()  
    6.         初始容量为11  
    7.     public Hashtable(Map m)  

    Properties

    [plain] view plain copy
     
    1. HashTable的一个子类,开发中经常使用    
    2. Properties键和值都是字符串,开发中经常会用在配置文件,properties文件(属性文件)    
    3. 一般通过文件读取的方式把key读入内存中,再使用getProperty()得到值  
    案例
    [java] view plain copy
     
    1. package com.itlwc;  
    2.   
    3. import java.util.Iterator;  
    4. import java.util.Properties;  
    5. import java.util.Set;  
    6.   
    7. public class Test {  
    8.     public static void main(String[] args) {  
    9.         Properties p = new Properties();  
    10.         p.setProperty("1", "a");  
    11.         p.setProperty("2", "b");  
    12.         p.setProperty("3", "c");  
    13.         Set<Object> set = p.keySet();  
    14.         Iterator<Object> ite = set.iterator();  
    15.         while (ite.hasNext()) {  
    16.             String key = (String) ite.next();  
    17.             String value = p.getProperty(key);  
    18.             System.out.println(key + "=" + value);  
    19.         }  
    20.     }  
    21. }  
    22. /*  
    23. 打印结果:  
    24.     3=c 
    25.     2=b 
    26.     1=a 
    27. */   

    LinkedHashMap

    [plain] view plain copy
     
    1. LinkedHashMap是Ordered,采用双链表实现的    
    2. 有固定顺序,也就是插入顺序    
    3. 构造方法    
    4.     public LinkedHashMap()   
    5.         初始容量为16  
    6.     public LinkedHashMap(int initialCapacity)    
    7.     public LinkedHashMap(Map m)  

    SortedMap接口

    [plain] view plain copy
     
    1. 保证按照键的升序排列的映射,天然顺序  

    SortedMap常用方法 

    [plain] view plain copy
     
    1. Object firstKey()    
    2.     返回有序映射中当前第一个(最小的)键  
    3. Object lastKey()    
    4.     返回有序映射中当前最后一个(最大的)键  
    5. SortedMap headSet(Object toKey)    
    6.     返回此有序映射的部分视图,其键值严格小于toKey   
    7. SortedMap tailSet(Object fromKey)    
    8.     返回此有序映射的部分视图,其键大于或等于fromKey  
    9. SortedMap subSet(Object fromKey,Object toKey)    
    10.     返回此有序映射的部分视图,其键值从fromKey(包括)到toKey(不包括)  
    11. Comparator comparator()  
    12.     返回与此有序映射关联的比较器,如果使用键的自然顺序,则返回null  

    TreeMap

    [plain] view plain copy
     
    1. TreeMap是SortedMap接口的实现,键对象不论以什么顺序插入,在遍历的时候,都会以天然顺序遍历    
    2. 构造方法    
    3.     public TreeMap()    
    4.     public TreeMap(SortedMap s)      
    5.     public TreeMap(Map m)  
    6.     public TreeMap(Comparator c)  
    7.        c指定比较器,与TreeSet相同,如果想要指定键的排序顺序,可以使用此构造器  
    8. 因为TreeMap是带排序的,所以想要为TreeMap增加自定义类型,必须指定排序规则  

    TreeMap排序规则Comparator案例

    [java] view plain copy
     
    1. package com.itlwc;  
    2.   
    3. import java.util.Comparator;  
    4. import java.util.Iterator;  
    5. import java.util.Set;  
    6. import java.util.TreeMap;  
    7.   
    8. public class Test {  
    9.     public static void main(String[] args) {  
    10.         TreeMap map = new TreeMap(new PersonComparator());  
    11.         map.put(new Person("lwc", 80), "1");  
    12.         map.put(new Person("nxj", 70), "3");  
    13.         map.put(new Person("lp", 60), "2");  
    14.         map.put(new Person("fy", 75), "4");  
    15.         Set set = map.keySet();  
    16.         Iterator ite = set.iterator();  
    17.         while (ite.hasNext()) {  
    18.             Person key = (Person) ite.next();  
    19.             String value = (String) map.get(key);  
    20.             System.out.println("编号:" + value + " 姓名:" + key.name + " 分数为:"  
    21.                     + key.score);  
    22.         }  
    23.     }  
    24. }  
    25.   
    26. class Person {  
    27.     String name;  
    28.     int score;  
    29.   
    30.     public Person(String name, int score) {  
    31.         this.name = name;  
    32.         this.score = score;  
    33.     }  
    34. }  
    35.   
    36. class PersonComparator implements Comparator {  
    37.     public int compare(Object o1, Object o2) {  
    38.         Person p1 = (Person) o1;  
    39.         Person p2 = (Person) o2;  
    40.         return p1.score - p2.score;  
    41.     }  
    42. }  
    43. /* 
    44. 打印结果: 
    45.     编号:2    姓名:lp   分数为:60 
    46.     编号:3    姓名:nxj  分数为:70 
    47.     编号:4    姓名:fy   分数为:75 
    48.     编号:1    姓名:lwc  分数为:80 
  • 相关阅读:
    mysql dns反说明的成绩
    Solaris 11 安装图解(1)
    Meld 1.1.5
    Open Movie Editor-视频编纂器
    Solaris 11 装配图解(6)
    Pidgin 2.0.2
    Subversion 1.4.4 发布
    Solaris 11 安装图解(5)
    Solaris 11 安置图解(3)
    HTML 实体盘诘东西
  • 原文地址:https://www.cnblogs.com/donaldlee2008/p/5222280.html
Copyright © 2020-2023  润新知