《实现模式》(2)

只剩下2个部分,这次学习了容器的用法.

概述
1.容器是程序中非常重要的东西,只有精通容器的用法才能掌握代码的良构.
2.容器的声明要用合适的泛型,理论上讲最宽广的类型作为声明最好,但事实为了方便阅读,必须要考虑合理的声明类型.
3.容器的特点.
3.1容器可以在创建后更改大小.
3.2容器可以有序或者无序.有序也有两种情况,根据添加先后排序,根据比较器排序.
3.3容器有唯一性,对象只知道容器对象,而不需要知道里面的每个元素
3.4容器可以通过循环迭代的方式做操作.
3.5当元素过多的时候,应该设计成map或者set.特别是list在某些时间应该改成set.但要注意如何处理重复元素.
接口:只摘要关键,重要.

1.数组:最简单,但最不灵活,在简单的操作下可以比其他容器快10倍速度.
2.Iterable 增加了迭代的功能,以及迭代时的修改
3.Collection 增加了add等修改功能.比较有意思的是增加了交集,并集和差集的操作.里面的并集用在安全副本上非常合适.
4.List 有序,按照添加的先后排序.ArrayList访问快,修改慢.LinkedList修改快,访问慢
5.Set 无序非重复.有意思的是在HashSet的构造方法里可以添加list,这样就可以去除list里的重复元素
SortedSet可以按照比较器排序,他的实现类是treeSet.
6.Map 通过键值对来存储数据.键必须唯一.Value如果没用泛型的话,取出来后要强转.
有意思的是Map用在可变状态上非常合适.
HashMap是最简单,效率也最高的,多用于查找.

实现类
1.每次选择的时候先选择最简单的,最后根据经验优化
2.任何容器在面对大规模遍历时表现都差不多,这时候应该考虑用更好的算法.
3.Collections是工具类,主要用于对于list排序,可以添加比较器参数来排序.
比较有意思的是,这里可以用比较器的匿名内部类.
还可以设置不可修改的容器,用于安全副本.
单元素容器和空容器,不知道有什么用.

继承接口的问题

为了获得接口的方法而选择继承接口是会暴露不必要的方法,应该选择使用委派.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值