Map集合和Collections工具类

本文深入解析了Map集合的特点,包括其双列数据结构、键值映射关系及唯一性。对比了Map与Collection集合的不同,详细介绍了HashMap、Hashtable、LinkedHashMap和TreeMap的特性与使用场景。同时,列举了Map集合的常用操作方法,如put、remove、containsKey等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Map集合的特点

Map集合时双列的,它有两个参数,一个是键key,一个是值value。存在映射关系,由一个键可以映射一个值,也就是一个键可以得到一个值。每个键最多只能映射一个值。

Map集合和Collection集合的区别:
  1. Map集合时双列的,Collection是单列的
  2. Map集合的键是唯一的,Collection中的Set接口的元素时唯一的
  3. Map集合的数据结构只对键有效,跟值无关系。Collection集合的数据结构只跟元素有效
Map集合的方法
  • V put(K key,V value)
    添加元素
  • void clear()
    清空元素
  • V remove(Object key)
    删除指定键的元素
  • boolean containsKey(Object key)
    判断指定键是否含有
  • boolean containsValue(Object value)
    判断指定值是否含有
  • boolean isEmpty()
    判断是否为空集合
  • Set<Map.Entry<K,V>> entrySet()
    获取元素是键值对的Set集合
  • V get(Object key)
    获取指定键映射的值
  • Set keySet()
    获取元素是键的Set元素
  • Collection values()
    获取集合中所有值的Collection集合
  • int size()
    返回集合中键值对的对数

V put(K key,V value)方法不只是可以添加元素,也可以对值进行替换。如果添加的元素的键在集合中已经存在,那么新添加的元素的值会覆盖原有这个元素的值。
例如:

        hashMap.put(1,"aaa");
        hashMap.put(1,"bbb");

此时键是1的元素的值会被替换为bbb。

遍历Map集合的方法

第一种:通过Set keySet() 方法,得到一个元素全是键的集合。然后遍历这个集合,通过get()方法,来获取键所对应的值

import java.util.HashMap;
import java.util.Set;

public class Demo1 {
    public static void main(String[] args) {
        HashMap<Integer, String> hashMap = new HashMap<>();
        hashMap.put(1,"aaa");
        hashMap.put(2,"bbb");
        hashMap.put(3,"ccc");
        hashMap.put(4,"ddd");
        hashMap.put(5,"eee");
        Set<Integer> set = hashMap.keySet();
        for (Integer integer : set) {
            String s = hashMap.get(integer);
            System.out.println(integer+"==="+s);
        }

    }
}

第二种:通过Set<Map.Entry<K,V>> entrySet()方法,得到元素是键值对Set集合,遍历这个Set集合,通过getkey()和getvalue()方法,获取键和值。

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

public class Demo1 {
    public static void main(String[] args) {
        HashMap<Integer, String> hashMap = new HashMap<>();
        hashMap.put(1,"aaa");
        hashMap.put(2,"bbb");
        hashMap.put(3,"ccc");
        hashMap.put(4,"ddd");
        hashMap.put(5,"eee");
        Set<Map.Entry<Integer, String>> entries = hashMap.entrySet();
        for (Map.Entry<Integer, String> entry : entries) {
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"==="+value);
        }

    }
}

HashMap和Hashtable的区别
HashMap:线程不安全,效率高,允许null值和null键
Hashtable:线程安全,效率低,不允许null值和null键

LinkedHashMap集合

概述:
Map接口的哈希表和链接列表的实现,具有可预知的迭代顺序
特点:
底层的数据结构是链表是哈希表,元素有序,并且唯一
元素的有序性由链表数据结构保证,元素的唯一性由哈希表数据结构保证
Map集合的数据结构只和键有关。

TreeMap集合

TreeMap键的数据结构是红黑树,可以保证键的唯一性和排序。
排序和TreeSet一样,分为自然排序和比较器排序
线程不安全但效率高。

Collections类

Collection类是针对集合元素进行操作的工具类,里面存放的是对元素操作的方法

方法:
  • public static void sort(List list)
    对集合中的元素进行排序,默认为自然排序
  • public static int binarySearch(List<?> list,T key)
    查找元素
  • public static T max(Collection<?> coll)
    获取集合中的最大值
  • public static void reverse(List<?> list)
    将集合中的元素反转
  • public static void shuffle(List<?> list)
    将集合中的元素随机置换位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值