Map集合

目录

一、Map集合

二、Map接口的实现类

三、HashMap

四、TreeMap

五、可变参数

一、Map集合

1.Map集合的概述和特点

java 复制代码
interface Map<K,V>  K:键的类型;V:值的类型

特点:双列集合,一个键对应一个集合;键不可以重复,值可以重复。

2.Map集合的基本使用

java 复制代码
public class MapDemo01 {
    public static void main(String[] args) {
        //创建集合对象
        Map<String,String> map = new HashMap<String,String>();
        //V put(K key, V value) 将指定的值与该映射中的指定键相关联
        map.put("001","张三");
        map.put("002","李四");
        map.put("003","王五");
        //输出集合对象
        System.out.println(map);
    }
}

3.Map集合的常用方法

方法名 说明
V put(K key,V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有的键值对元素
boolean containsKey(Object key) 判断集合是否包含指定的键
boolean containsValue(Object value) 判断集合是否包含指定的值
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中键值对的个数

示例代码:

java 复制代码
public class Test02 {
    public static void main(String[] args) {
        //创建集合对象
        Map<String,String> map = new HashMap<>();
        //添加元素
        map.put("张三","A");
        map.put("李四","B");
        map.put("王五","C");
        map.put("赵六","D");
        //根据键删除键值对元素
        System.out.println(map.remove("张三"));
        //移除所有键值对元素:map.clear();
        //判断集合是否包含指定的键
        System.out.println(map.containsKey("李四"));
        //判断集合是否包含指定的值
        System.out.println(map.containsValue("B"));
        //判断集合是否为空
        System.out.println(map.isEmpty());
        //int size():集合的长度,也就是集合中键值对的个数
        System.out.println(map.size());
        //输出集合对象
        System.out.println(map);
    }
}

4.Map集合的获取方法

方法名 说明
V get(Object key) 根据键获取值
Set<K> keySet() 获取所有键的集合
Collection<V> values() 获取所有值的集合
Set<Map.Entry<K,V>> entrySet() 获取所有键值对对象的集合

代码示例:

java 复制代码
public class Test02 {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        map.put("张三","A");
        map.put("李四","B");
        map.put("王五","C");
        map.put("赵六","D");
        //根据键获取值
        System.out.println(map.get("李四"));
        //获取所有键的集合
        Set<String>keyset = map.keySet();
        for (String key : keyset) {
            System.out.println(key);
        }
        System.out.println("-----------------");
        //获取所有值的集合
        Collection<String>values=map.values();
        for (String value : values) {
            System.out.println(value);
        }
        System.out.println("-----------------");
        //获取所有键值对对象的集合.用getKey()得到键;用getValue()得到值
        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        for (Map.Entry<String, String> entry : entrySet) {
            String key=entry.getKey();
            String va=entry.getValue();
            System.out.println(key+","+va);
        }
    }
}

5.Map集合的遍历方式

获取所有键的集合。用keySet()方法实现,取所有键的集合。用keySet()方法实现,根据键去找值(用get(Object key)方法实现)。

示例代码:

java 复制代码
public class Test02 {
    public static void main(String[] args) {
        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();
        //添加元素
        map.put("张三","A");
        map.put("李四","B");
        map.put("王五","C");
        //获取所有键的集合。用keySet()方法实现
        Set<String> keySet = map.keySet();
        //遍历键的集合,获取到每一个键。用增强for实现
        for (String key : keySet) {
            //根据键去找值。用get(Object key)方法实现
            String value = map.get(key);
            System.out.println(key + "," + value);
        }
    }
}

获取所有键值对对象的集合(Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合),遍历键值对对象的集合,得到每一个键值对对象(用增强for实现,得到每一个Map.Entry),根据键值对对象获取键和值(用getKey()得到键,用getValue()得到值)。

java 复制代码
public class Test02 {
    public static void main(String[] args) {
        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();
        //添加元素
        map.put("张三","A");
        map.put("李四","B");
        map.put("王五","C");
        //获取所有键值对对象的集合
        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        //遍历键值对对象的集合,得到每一个键值对对象
        for (Map.Entry<String, String> me : entrySet) {
            //根据键值对对象获取键和值
            String key = me.getKey();
            String value = me.getValue();
            System.out.println(key + "," + value);
        }
    }
}

二、Map接口的实现类

1.HashMap:无序、不重复、无索引。

2.LinkedHashMap:有序、不重复、无索引。

3.TreeMap:可排序、不重复、无索引。

三、HashMap

1.HashMap集合的特点

HashMap底层是哈希表结构,依赖hashCode方法和equals方法保证键的唯一,如果键键要存储的是自定义对象,需要重写hashCode和equals方法。

四、TreeMap

1.TreeMap集合的特点

TreeMap底层是红黑树结构,依赖自然排序或者比较器排序,对键进行排序,如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则。

五、可变参数

1.可变参数介绍

可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了;方法的参数类型已经确定,个数不确定,我们可以使用可变参数。

2.可变参数的定义格式

java 复制代码
修饰符 返回值类型 方法名(数据类型... 变量名) {  }

3.可变参数的注意事项

这里的变量其实是一个数组;如果一个方法有多个参数,包含可变参数,可变参数要放在最后。

4.可变参数的基本使用

java 复制代码
public class ArgsDemo01 {
    public static void main(String[] args) {
        System.out.println(sum(10, 20));
        System.out.println(sum(10, 20, 30));
        System.out.println(sum(10, 20, 30, 40));

        System.out.println(sum(10,20,30,40,50));
        System.out.println(sum(10,20,30,40,50,60));
        System.out.println(sum(10,20,30,40,50,60,70));
        System.out.println(sum(10,20,30,40,50,60,70,80,90,100));
    }

//    public static int sum(int b,int... a) {
//        return 0;
//    }

    public static int sum(int... a) {
        int sum = 0;
        for(int i : a) {
            sum += i;
        }
        return sum;
    }
}
相关推荐
啾啾Fun17 分钟前
Java反射操作百倍性能优化
java·性能优化·反射·缓存思想
20岁30年经验的码农24 分钟前
若依微服务Openfeign接口调用超时问题
java·微服务·架构
曲莫终32 分钟前
SpEl表达式之强大的集合选择(Collection Selection)和集合投影(Collection Projection)
java·spring boot·spring
ajassi20001 小时前
开源 java android app 开发(十二)封库.aar
android·java·linux·开源
q567315231 小时前
Java使用Selenium反爬虫优化方案
java·开发语言·分布式·爬虫·selenium
kaikaile19951 小时前
解密Spring Boot:深入理解条件装配与条件注解
java·spring boot·spring
魔道不误砍柴功1 小时前
《JVM 启动参数怎么写最优?从 Xms 到 GCLog 的调优实践》
jvm
守护者1701 小时前
JAVA学习-练习试用Java实现“一个词频统计工具 :读取文本文件,统计并输出每个单词的频率”
java·学习
bing_1581 小时前
Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
java·spring boot·后端
ergdfhgerty1 小时前
斐讯N1部署Armbian与CasaOS实现远程存储管理
java·docker