集合(三):Map集合,HashMap,TreeMap,集合遍历

Map 集合

Map 接口是一种双列集合,它的每个元素都包含一个键对象 Key 和值对象 Value,键和值之间存在一种对应关系,成为映射。Map 中的映射关系是一对一的,一个键 Key 对应唯一的值 value,键和值可以是任意的数据类型,而且键 Key 不允许重复,在访问 Map 集合中的元素时,只要指定了 Key,就能找到对应的 value。

集合(三):Map集合,HashMap,TreeMap,集合遍历_第1张图片

方法声明 功能描述
void put(Object key, Object value) 向Map集合中添加指定键值映射的元素,键值重复时,覆盖之前已经存在的简直元素
int size() 返回 Map集合键值对映射的个数
Object get(Object key) 返回指定键所映射的值,如果此映射不包含该键的映射关系,返回null
boolean containsKey(Object key) 查看Map集合中是否存在指定的键Key
boolean containsValue(Object value) 查看Map集合中是否存在指定的值value
Object remove(Object key) 删除并返回Map集合中指定键key的键值映射元素
void clear() 清空整个Map集合中的键值映射元素
Collection values() 以Collection集合的形式返回Map集合中所有的值Value

Map集合的实现类—HashMap集合

HashMap 集合是 Map 接口的一个实现类,用于存储键值映射关系,该集合的键和值允许为空,但是键不可重复,且集合中的元素是无序的。HashMap 底层是由哈希表结构组成,就是"数组 + 链表"的组合体,这种方式,使得HashMap集合对于元素的增删改查的效率高。

public static void main(String[] args) {
        //创建 HashMap 对象
        HashMap<String,String> map = new HashMap<String, String>();
        //向Map中存入数据
        map.put("1","Jack");
        map.put("2","Rose");
        map.put("3","Lucy");
        map.put("4","Lucy");
        map.put("1","Tom");
        System.out.println(map);

        //查看键是否存在
        System.out.println(map.containsKey("1"));

        //获取指定键对应的值
        System.out.println(map.get("1"));

        //获取集合中的键和值集合
        System.out.println(map.keySet());
        System.out.println(map.values());

        //替换指定键对应的值
        map.replace("1","tom");
        System.out.println(map);

        //删除指定键对应的值
        map.remove("1");
        System.out.println(map);
    }
------------------------------
    {1=Tom, 2=Rose, 3=Lucy, 4=Lucy}
	true
	Tom
	[1, 2, 3, 4]
	[Tom, Rose, Lucy, Lucy]
	{1=tom, 2=Rose, 3=Lucy, 4=Lucy}
	{2=Rose, 3=Lucy, 4=Lucy}

Map集合的实现类—Hashtable集合

Hashtable 也是 Map 集合的一个实现类,它和 HashMap 集合类似,也有一些区别

  • HashMap — jdk1.2版本,线程不安全,运行效率快;允许用 null 作为 key 或是 value
  • Hashtable — jdk1.0版本,线程安全,运行效率慢;不允许 null 作为 key 或是 value

Hashtable 有一个子类 Properties,它主要用来存储字符串类型的键和值,在开发中,经常使用 Properties 来用于配置文件的读取。

Map集合的实现类—TreeMap集合

TreeMap 集合用来存储简直映射关系的,不允许出现重复的键,内部通过二叉树的原理保证键的唯一。因为 TreeMap 内部实现了 SortedMap 接口,会默认按照自然顺序对 Key 进行排序。

 public static void main(String[] args) {
        TreeMap map = new TreeMap();
        map.put("2","Rose");
        map.put("1","Jack");
        map.put("3","Luck");
        System.out.println(map);
    }
---------------------------
    {1=Jack, 2=Rose, 3=Luck}

Map集合的遍历

方法声明 功能描述
Set keySet() 以Set集合的形式返回Map集合中所有的键Key
Collection value 以Collection集合的形式返回Map集合中所有的值Value
Set> entrySet() 将Map集合转换为存储元素类型为Map的Set集合
public class Demo2 {
    public static void main(String[] args) {
        //所有键
        Set<String> keySet = Country.countries.keySet();
        for(String k : keySet) {
            //System.out.println(k);
        }

        //所有值
        Collection<String> values = Country.countries.values();
        for(String v : values) {
            //System.out.println(v);
        }

        //值 + 键
        Set<Map.Entry<String, String>> entries = Country.countries.entrySet();
        for(Map.Entry<String,String> s : entries) {
            System.out.println(s.getKey() + "=" + s.getValue());
        }
    }
}

class Country{
    public static final Map<String,String> countries = new HashMap<String,String>();

    static{
        countries.put("CN","中华人民共和国");
        countries.put("US","美国");
        countries.put("KR","韩国");
        countries.put("IT","意大利");
        countries.put("JP","日本");
    }
}

你可能感兴趣的:(集合)