Map接口知识点整理

Map

特点:
  • Map每个元素由键与值两部分组成,Map中的key和value 可以时任何引用类型的数据,会封装到HashMap$Node对象中
  • Map键不能重复,每个键对应一个值
  • 键和值可以为null
  • key不可用重复,value可重复,如果添加相同的key,则会覆盖原来的key-value(key不会更改,value会)
  • key可以为null,value也可以为null,注意key只能有一个null,value可以有多个null
  • 常用String类来作为key
  • key和value时一一对应的关系,通过指定的key总能找到对应的value
  • 无序,底层是哈希表实现的
常用方法:
  • put:添加元素
  • remove:删除键映射关系
  • get:根据键获取值
  • size获取元素个数
  • isEmpty:判断个数是否为0
  • clear:清空集合
  • containKey:查找键是否存在
Map的几大遍历方式:
  1. 增强for循环
//第一种,增强for循环 
//先取出所有的key
Set keyset = map.keySet();
for (Object key : keyset) {
    System.out.println(key+" "+map.get(key));
}
  1. 迭代器
//第二种迭代器
Set keyset = map.keySet();
Iterator iterator = keyset.iterator();
while (iterator.hasNext()) {
    Object key =  iterator.next();
    System.out.println(key+" "+map.get(key));
}
  1. 取出所有的value,进行value循环 增强for
//取出所有的value
Collection values = map.values();
//可使用2种遍历Collections的方式
 //增强for
for (Object value : values) {
    System.out.println(value);
}
  1. 迭代器 遍历value
Collection values = map.values();
Iterator iterator1 = values.iterator();
while (iterator1.hasNext()) {
    Object next =  iterator1.next();
    System.out.println(next);
}
  1. 通过EmtrySet 增强for

原理:Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map中是一一对应关系,这一对对象又称做Map 中的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。

Set entrySet = map.entrySet();
for (Object entry : entrySet) {
    //将entry转成Map.Entry
    Map.Entry m = (Map.Entry) entry; 
    System.out.println(m.getKey()+" "+m.getValue());
}
  1. 迭代器
//使用EntrySet
Set entrySet = map.entrySet();
Iterator iterator2 = entrySet.iterator();
while (iterator2.hasNext()) {
    Object entry =  iterator2.next();
    Map.Entry m = (Map.Entry) entry;
    System.out.println(m.getKey()+" "+m.getValue());
}

HashMap

特点:
  • Map接口常用的实现类:HashMap HashTable和Properties
  • HashMap时Map接口中使用频率最高的类
  • 没有实现同步,线程不安全

HashTable

特点:
  • 存放元素时键值对即:k-v
  • HashTable的键和值都不能为null,否则会抛出异常
  • HashTable是线程安全的
  • HashTable 的使用方法跟HashMap类似

Properties

特点:
  • Properties类继承HashTable类并且实现了Map接口,也是一种键值对的形式来保存数据,键值不能为null
  • 使用特点和HashTable类似
  • Properties还可以用于从xxx.properties文件中,加载数据到Properties类对象,并进行读取和修改
  • 说明:在实际工作中,xxx.properties文件通常作为配置文件。
Java是一种广泛使用的面向对象编程语言,具有强大的跨平台能力、安全性、可移植性和高度的抽象性。对于Java程序设计的知识点整理,我会提供一个简要概述和关部分的介绍,但请注意,由于字数限制,这里无法提供完整的2000字详细内容。以下是Java程序设计中的一些核心知识点: 1. **Java概述**: - Java的历史和发展 - Java的特性和优势(如平台无关性、垃圾回收机制) - Java的核心API和类库 2. **Java语法基础**: - 数据类型和变量 - 运算符和表达式 - 控制结构(if-else、switch、循环等) - 数组和集合框架 3. **面向对象编程**: - 抽象类与接口的区别 4. **构造函数和析构器**: - 构造函数的作用和生命周期 - 初始化块和析构器的使用 5. **异常处理**: - 异常的概念和分类 - try-catch-finally语句结构 - 自定义异常和抛出异常 6. **输入输出流**: - 字符流(`System.out.println()`) - 文件I/O操作 - 输入/输出流的缓冲区和关闭资源 7. **类加载器和包**: - 类加载过程 - 包的作用和命名规则 8. **多线程**: - Thread类和Runnable接口 - 互斥量、信号量和条件变量 - 线程池和并发工具类 9. **集合框架**: - 核心类(List, Set, Map) - 集合接口(Iterable, Iterator) - 泛型和集合容器的使用 10. **IO流与网络编程**: - Socket编程 - ServerSocket和ClientSocket - 套接字工厂和NIO(非阻塞I/O) 11. **并发编程工具**: - CompletableFuture - ExecutorService和ThreadFactory - Future和Callable 12. **JVM和内存管理**: - 堆和栈的区别 - Garbage Collection(垃圾回收)机制 13. **数据库访问**: - JDBC连接数据库 - ORM框架(Hibernate, MyBatis) 14. **Spring框架**: - IoC和AOP概念 - Bean容器和配置文件 15. **测试驱动开发(TDD)**: - JUnit单元测试 - Mockito模拟对象 16. **Spring Boot**: - 简化Java应用的初始配置 - RESTful API的创建 相关问题: 1. Java的三大特性是什么? 2. 你能解释一下Java中的封装吗? 3. JUnit在单元测试中的作用是什么? 4. Spring框架如何简化开发流程? 如果想深入了解每个知识点,你可以查阅相关的教程书籍、在线文档或视频课程进行学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值