Java学习day30-Map集合

一、Map

1.Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组用于保存Map里的Key,另外一组用于保存Map里的Value。

2.Map中的key和value都可以是任何引用类型的数据。

3.Map中的Key不允许重复,即同一个Map对象的任何两个Key通过equals方法比较都返回false。

4.Key和Vaiue之间存在单向一对一的关系,即通过指定的Key总能找到唯一,确定的Value。

 

二、Map接口和HashMap类

package day16;

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

public class Test6 {
    public static void main(String[] args){
        Map<String,Integer> map = new HashMap<String,Integer>();
        
        map.put("b", 1);//添加数据
        map.put("c", 2);
        map.put("e", 2);
        System.out.println(map);
        
        System.out.println(map.get("b"));//根据key取值
        
        map.remove("c");//根据key来移除键值对
        System.out.println(map);
        
        System.out.println(map.size());//map集合的长度
        
        System.out.println(map.containsKey("b"));//判断当前的map集合是否包含指定的key;
        
        System.out.println(map.containsValue(1));//判断当前的map集合是否包含指定的Value
        
//        map.clear();//清空集合
        
        Set<String>keys = map.keySet();//获取map集合的key的集合
        
        map.values();//获取map集合的values的集合
        
        
        //遍历map集合,通过map.keySet();
        for(String key : keys){
            System.out.println("key:" + key + ",value:" + map.get(key));
        }
        
        //通过map.entrySet();遍历map集合
        Set<Entry<String,Integer>> entrys = map.entrySet();
        for(Entry<String,Integer>en : entrys){
            System.out.println("key:" + en.getKey() + ",value:" + en.getValue());
        }
    }
}

打印结果为:

Java学习day30-Map集合

  

三、HashMap & Hashtable

1.HashMap和Hashtable是Map接口的两个典型实现类,区别在于:

  ①Hashtable是一个古老的Map实现类,不建议使用。

  ②Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的。

  ③Hashtable不允许使用null作为key和value,而HashMap可以。

2.与HashSet集合不能保证元素的排列顺序一样,HashMap和Hashtable也不能保证其中key-value对的顺序。

3.HashMap、Hashtable判断两个key相等的标准是:两个Key通过equals方法返回true,hashCode值也相等。

 

四、TreeMap

1.TreeMap存储Key-Value对时,需要根据Key对key-value对进行排序。TreeMap可以保证所有的Key-Value对处于有序状态。

2.TreeMap的Key的排序:

  ①自然排序:TreeMap的所有的Key必须实现Comparable接口,而且所有的Key应该是同一个类的对象,否则将会抛出ClassCastException.

  ②定制排序(了解):创建TreeMap时,传入一个Comparable对象,该对象负责对TreeMap中的所有key进行排序。此时不需要Map的Key实现Comparable接口。

3.一般使用map集合,不会使用过于复杂的对象做key。

package day16;

import java.util.Map;
import java.util.TreeMap;

public class Test6 {
    public static void main(String[] args){
        
        //TreeMap的自然排序是字典排序
        Map<Integer,String> map = new TreeMap<Integer,String>();
        map.put(4, "a");
        map.put(2, "a");
        map.put(3, "a");
        map.put(1, "a");
        
        System.out.println(map);
        
        Map<String,String> map1 = new TreeMap<String,String>();
        map1.put("b", "b");
        map1.put("c", "c");
        map1.put("d", "d");
        map1.put("a", "a");
        map1.put("ab", "ab");
        map1.put("1", "ab");
        map1.put("10", "ab");
        
        System.out.println(map1);
    }
}

打印结果是:

Java学习day30-Map集合

 

上一篇:day30_学习总结


下一篇:day30 网络编程