java语言基础--map

map 接口

map中的元素都是以键-值得形式存在的。

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class MapTest01 {

    @SuppressWarnings("unlikely-arg-type")
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        String s1 = map.put(1001, "luffy");
        map.put(1002, "Zoro");
        String s2 = map.put(1001,"loben");
        System.out.println(map);    //{1001=loben, 1002=Zoro}
        System.out.println(s1);        //null
        System.out.println(s2);        //loben
        //当键一样时,后面的值会替换掉前面的值
        System.out.println(map.get(1002));    //Zoro
        
        System.out.println(map.containsKey(1001));    //true
        System.out.println(map.containsValue("Zoro"));    //true
        int size = map.size();
        System.out.println(size);        //2
        
        Collection<String> values = map.values();
        System.out.println(values);    //[loben, Zoro]
        String string = map.remove(1002);
        System.out.println(string);        //Zoro
        
    }
}

 

注:当键一样时,后者代替前者!

map的遍历方式:

 方式一:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapTest02 {

    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1001, "路飞");
        map.put(1002, "索隆");
        map.put(1003, "娜美");
        map.put(1004, "乌索普");
        map.put(1005, "山治");
        map.put(1006, "乔巴");
        map.put(1007, "罗宾");
        map.put(1008, "弗兰奇");
        map.put(1009,"布鲁克");
        map.put(10010,"甚平");
        
        //set的值也是不能重复的;set的add方法的底层其实就是map的push方法。
        Set<Integer> set = map.keySet();
        Iterator<Integer> iter = set.iterator();
        //获取key之后,就可以获取相应的value;
        while(iter.hasNext()) {
            Integer next = iter.next();
            System.out.println(next+map.get(next));
        }
        
        for(Integer key :map.keySet()) {
            System.out.println(key+map.get(key));
        }
    }
}

方式二:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapTest03 {

    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1001, "路飞");
        map.put(1002, "索隆");
        map.put(1003, "娜美");
        map.put(1004, "乌索普");
        map.put(1005, "山治");
        map.put(1006, "乔巴");
        map.put(1007, "罗宾");
        map.put(1008, "弗兰奇");
        map.put(1009,"布鲁克");
        map.put(10010,"甚平");
        
        Set<Entry<Integer,String>> entrySet = map.entrySet();
        Iterator<Entry<Integer, String>> iter = entrySet.iterator();
        while(iter.hasNext()) {
            Entry<Integer, String> entry = iter.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
        
        for(Map.Entry<Integer, String> en : map.entrySet()) {
            System.out.println(en.getKey()+":"+en.getValue());
        }
    }
}

LinkedHashMap:

存取顺序一致;

TreeMap:

对key进行排序;

HashTable:

HashTable是在jdk1.1开始引进的;HashTable是线程安全的,里面的值不能为null;

HashMap是在jdk1.2引进的;线程相对不安全,效率高;key和value是可以是null;

 

posted on 2018-08-20 10:28  董大志  阅读(165)  评论(0)    收藏  举报

导航