Java编程思想笔记(十一)—— 持有对象

感悟

本章是关于容器的初级章节,后面有容器的深入研究。重点学习容器原理和基础方法,掌握几种常见的容器。可以说,容器是Java编程最重要的编程工具也不为过。

笔记
  • 11.1 泛型和类型安全的容器
1、引出泛型和注解,这里了解就好,后面有专门章节讲解。
2、示例了ArrayList用法,结合泛型和向上转型,同时演示了foreach方法。
  • 11.2 基本概念
引出一些基本概念,了解容器接口与实现类。
  • 11.3 添加一组元素
1、collection.addAll() 成员方法、构造器接受另一个Collection
2、Collection.addAll() 可以接受可变参数
3、Arrays.asList() 底层是数据,不能调整尺寸和删除,并且对于继承类型有一些限制
  • 11.4 容器的打印
引出各种常用容器以及所属归类,并且介绍了默认打印(toString()):Collection为[],Map为{}
  • 11.5 List
1、ArrayList长于随机访问,中间插入慢
2、LinkedList长于插入删除,随机访问慢
3、要注意的是subList()所产生的列表幕后就是初始列表,对返回的列表的修改会反映到初始列表,反之亦然
4、其余常用方法要掌握
  • 11.6 迭代器
    1)ListIterator
1、引出迭代器Iterator和iterator()方法,迭代器统一了对容器的访问方式。
2、引出更高级的ListIterator和listIterator(),支持往后和往前遍历。
  • 11.7 LinkedList
1、可以使其用作栈、队列、双端队列
2、getFirst()==element()!=peek(),前两者抛异常,后者返回null
3、removeFirst()==remove()!=poll(),前两者抛异常,后者返回null
4、add()==addLast()==offer() 插入列表末尾,removeLast()移除返回最后一个元素
  • 11.8 Stack
结合泛型,用LinkedList实现栈,后续学了泛型再来理解会好一些。
  • 11.9 Set
去重,三种常用Set,操作等于Collection
1、HashSet 散列、无序、快
2、TreeSet 升序或降序,字母排序String.CASE_INSENTIVE_ORDER
3、LinkedHashSet 插入有序
  • 11.10 Map
将对象映射到其他对象的能力是解决编程问题的杀手锏。HashMap是主要实现,Map可以返回键的Set,值的Collection,或者是键值对的Set。
  • 11.11 Queue
    1)PriorityQueue
LinkedList是Queue的一种实现
1、offer()在队尾添加元素,或者返回false
2、peek(),element()返回队头但不移除,空值时候前者返回null,后者抛异常。
3、poll()remove()移除并返回队头,空值前者返回null,后者抛异常。
4、PriorityQueue需要提供自己的Comparator,Integer、String、Character已内建了自然排序,可以默认小到大,可以指定大道小Collection.reverseOrder()
  • 11.12 Collection和Iterator
1、实现Iterable接口的,可以用foreach,后续有详细说明。
2、比较Collection和Iterator遍历队列的优缺点。实现Collection必须实现iterator(),或者继承AbstractCollection但无法继承其他类。与之相比要实现一个不是Collection的外部类时,使用Iterator更吸引人,不必实现不必要的方法,例如将队列与消费队列联合起来,且是一种耦合度小的方式。
  • 11.13 Foreach与迭代器
    1)适配器方法惯用法
1、数组 + 实现Iterable接口中产生Iterator的iterator()方法  可以用于foreach
2、通过添加一个能够产生Iterable对象的方法,达到适配foreach语句,实现可选择指定迭代器能力。
3、再次强调Arrays.asList()产生的List会被打乱,会修改底层的数组。
  • 11.14 总结
1、数组、一旦创建,容量不可变。
2、Collection:List、Set、Queue。
3、Map关联键值对。
4、容器不能持有基本类型,会自动转换成包装类。
5、不应该用过时的Vector、Hashtable、Stack。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值