黑马程序员 + 第16天 Map集合

本文详细介绍了Java中的Map集合,包括其特点、与Collection的区别、常用方法及实现类如HashMap、TreeMap等,并提供了两种取出Map元素的方式。

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

------- android培训java培训、期待与您交流! ----------


day16

1、Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性

MapCollection的区别

1MapCollection在集合框架中属于并列存在;

2Map中存储的是键值对,存储元素使用put方法;Collection使用add方法。

3Map集合没有直接取出元素的方法,而是先转成Set集合,再通过迭代获取元素。

4Map集合中的键要保证唯一性。

Map常用方法

1,添加。

put(K key, V value) 

putAll(Map<? extends K,? extends V> m) 

添加元素:如果添加时出现相同的键,那么后添加的值会覆盖原有键对应的值,并且put方法会返回被覆盖的值

2,删除。clear()  remove(Object key) 

3,判断。

containsValue(Object value) 

containsKey(Object key)  isEmpty() 

4,获取。get(Object key)  size()  values() 获取map集合中所有的值

可以通过get方法的返回值来判断一个键是否存在,通过返回null来判断。

entrySet() 

keySet() 

2Map

|--Hashtable:底层是哈希表数据结构,不可以存入nullnull该集合是线程同步的jdk1.0,效率低。

|--HashMap:底层是哈希表数据结构,允许使用nullnull值,该集合是不同步的。将Hashtable替代,jdk1.2效率高

|--TreeMap:底层是二叉树数据结构,线程不同步。可以给Map集合中的键进行排序。

Map和Set很像,其实Set底层就是使用了Map集合

3Map集合的两种取出方式: 参见MapDemo2.java

1Set<k> keySet:将Map中所有的键存入到Set集合。因为Set具备迭代器,所以可以用迭代方式取出所有的键,再根据get方法获取每一个键对应的值。

Map集合的取出原理:将Map集合转成Set集合,再通过迭代器取出。

//第一种取出方式 keySet

Set<Student> keySet = hm.keySet();

Iterator<Student> it = keySet.iterator();

while(it.hasNext())

{

Student stu = it.next();

String addr = hm.get(stu);

System.out.println(stu+".."+addr);

}

2Set<Map.Entry<k,v>> entrySet:将Map集合中的映射关系存入到了Set集合中,而这个关系的数据类型就是:Map.Entry

Entry其实就是Map中的一个static内部接口。为什么要定义在内部呢

因为只有有了Map集合,有了键值对,才会有键值的映射关系。关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素。

//第二种取出方式 entrySet

Set<Map.Entry<Student,String>> entrySet = hm.entrySet();

Iterator<Map.Entry<Student,String>> iter = entrySet.iterator();

while(iter.hasNext())

{

Map.Entry<Student,String> me = iter.next();

Student stu = me.getKey();

String addr = me.getValue();

System.out.println(stu+"........."+addr);

}

参见 MapTest.java

4、什么时候使用map集合呢? 当数据之间存在着映射关系时,就可以使用map集合(map集合被使用是因为具备映射关系)。

5、map扩展知识,map中包含map,一对多的关系 。 参见MapDemo3.java


### 黑马程序员 JavaWeb 和 AI 的课程、资料与学习路径 #### 关于黑马程序员JavaWeb 开发 JavaWeb 是一种基于 Web 技术的应用程序开发框架,主要用于构建动态网站和企业级应用。根据提供的参考资料[^3],可以了解到 Lombok 这样的工具能够通过注解的方式减少冗余代码,从而提升开发效率。 在实际项目中,Spring Boot 提供了一种快速构建微服务架构的方法[^1]。它集成了许多常用的依赖项并提供了自动配置功能,使得开发者无需手动编写大量的 XML 配置文件即可完成项目的初始化工作。此外,在 Service 层面引入 PageHelper 插件可以帮助实现分页查询等功能[^4],进一步优化用户体验。 #### 数据结构与算法的重要性 对于任何希望深入理解计算机科学原理的人来说,掌握扎实的数据结构与算法知识都是必不可少的一部分[^2]。这些基础知识不仅有助于提高编程能力,还能够在解决复杂业务逻辑时提供更高效的解决方案。 #### 结合人工智能技术的学习方向 随着大数据时代的到来以及机器学习模型的发展,越来越多的企业开始尝试将传统 IT 系统升级为智能化服务平台。因此,在掌握了基本的 JavaWeb 技能之后,还可以考虑向以下几个方面扩展自己的技能树: - **自然语言处理 (NLP)**:利用 NLP 库如 Stanford CoreNLP 或者 OpenNMT 来分析用户输入的信息,并给出相应的反馈; - **图像识别**:借助 TensorFlow/Keras 构建卷积神经网络(CNN),用于图片分类或者目标检测任务; - **推荐系统设计**:研究协同过滤方法及其变体形式(比如矩阵分解),并通过 Spark MLlib 实现大规模离线训练过程; 以下是部分可能涉及的技术栈及相关资源链接建议: | 方向 | 推荐书籍/教程 | |--|--| | Python 基础入门 | 《Python编程——从入门到实践》 | | NumPy & Pandas 使用指南 | 官方文档 https://numpy.org/doc/stable/user/index.html#user-guide<br>https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf | | Scikit-Learn 教程 | http://scikit-learn.org/stable/tutorial/basic/tutorial.html | 最后提醒一下各位同学,在选择具体课题之前最好先评估清楚个人兴趣所在领域范围内的发展前景如何再做决定哦! ```java // 示例代码展示 Spring Boot 中 Controller 方法定义方式 @RestController @RequestMapping("/api/v1/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public ResponseEntity<UserDto> getUserById(@PathVariable Long id){ Optional<UserEntity> userOpt = this.userService.findById(id); if(!userOpt.isPresent()){ throw new ResourceNotFoundException("User not found with ID : "+id); } UserDto response = modelMapper.map(userOpt.get(), UserDto.class); return new ResponseEntity<>(response, HttpStatus.OK); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值