JAVA入门——MAP系列集合

一、双列集合

特点:


  • 一次存储一对数据,分别为“键”和“值”
  • 键不能重复,值可以重复(映射)
  • 可以通过键找到对应的唯一值
  • 键+值 这个整体称为键值对,或者键值对对象,JAVA中称为Entry对象

结构:


  • 顶层接口MAP
  • 实现类:HashMap,TreeMap
  • HashMap子类:LinkedHashMap

二、MAP

1.常见API

put:(添加/覆盖)


  • 在添加数据时,如果键存在,会把原有的键值对对象覆盖,返回原来键值对中的值
  • 如果键不存在,则返回null

remove:


  • 要传入键值,返回值是对应键值对中的值

2.遍历方式

  • 1.键找值:因为键是独立的,可以用一个Set集合存放所有键,Map中有写好的方法keySet()

Set<String> keys = map.KeySet();

  • 2.键值对:依次获取每个键值对对象,获取键和值

entrySet();//获取键值对对象

getKey(); //获取键

getValue();//获取值

  • 例:
    • 需要注意Entry是Map的内部接口,类似内部类那里的类名调用,也可以导入包java.util.Map.Entry,导包后就不用写Map.了
import java.util.Map;
import java.util.HashMap;
import java.util.Set;

public class Demo1 {

    public static void main(String[] args) {

        Map<String, String> map = new HashMap<>();
        map.put("114", "514");
        map.put("115", "515");
        map.put("116", "516");

        Set<Map.Entry<String, String>> entries = map.entrySet();
        //Entry是Map的内部接口,如果导入包可以省略Map

        for (Map.Entry<String, String> entry : entries) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }

}
  • 3.lambda表达式
    • 源码中,其实就是一个增强for遍历的形式,多了一个异常的抛出

default void forEach(BiConsumer<? super K,? super V> action)

三、HashMap

特点:


  • 方法使用Map中的即可
  • 集合的特点由键决定,键是无序、不重复、无索引的
  • 底层原理和HashSet一样,都是哈希表结构(注意哈希值只与键有关

底层原理:可以看这个视频,我个人觉得讲的很好


集合进阶-13-HashMap源码超详细解析(一)_哔哩哔哩_bilibili

四、LinkedHashMap

特点:


  • 由键决定:有序、不重复、无索引
    • 有序:保证数据的存入和取出的顺序一致,底层依旧是多了一个双链表的机制,能记录前后节点

五、TreeMap

特点:


  • 底层和TreeSet一样,都是红黑树结构
  • 可排序、不重复、无索引
  • 可排序:可以对键进行排序
    • 注意:默认按照从小到大进行排序,也可以自定义排序规则,和TreeSet类似

排序规则书写:


一:实现Comparable接口

二:创建集合时传递Comparator比较器对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值