No.8 集合

[size=medium]所有Collection都会透过其iterator()产生一个Iterator
常用容器: Collection( List, Set), Map()
List: [color=red]次序是List的最重要的特性[/color];它保证以某种特定次序来维护元素.List会产生ListIterator,透过它你可以从两个方向来对List进行走访,也可以在List之内进行元素的安插和移除
ArrayList: 以array方式实现的List.允许快速随机访问,但是当元素的安插或移除发生于List中央位置时,效率便很差,面对ArrayList,你应该只拿ListIterator来进行向后或向前走访动作,而不应该拿它来进行元素安插和移除动作,因为后者所花的代价远较LinkedList高昂
LinkedList: 提供最佳顺序访问,以及成本低廉的[List中央位置元素安插和移除],随机访问动作则相对缓慢(如果想进行随机访问,请改用ArrayList).具备的方法: addFirst(), addLast(), getFirst(), getLast(), removeFirst(), removeLast()

Set: 它拥有和Collection一模一样的interfaces,所以它不像上述两种lists一样地有额外功能.Set就是一个Collection,只不过其行为不同罢了(这是继承和多型的理想运用方式: 展现不同行为).[color=red]Set拒绝持有重复的元素实值[/color](value),并不保证以任何特定次序来维护其元素
Set需要某种方式以维护其元素次序,这意味你必须实现Comparable 接口,并定义compareTo()
[color=red]使用HashSet和TreeSet时,你都得为你的class定义equals(),但只有当你的class将被置于HashSet时,才一定得定义hashCode()[/color]
Map: 维护key-value的关联性,使你可以使用key来搜寻value
put(Object key, Object value): 会将value加入,并将它关联至key.
get(Object key): 会传回key所对应的value. 你也可以使用containsKey()和containsValue()来检查Map内是否含有某个key和某个value
HashMap: 不是缓慢地逐一搜寻某个key,而会使用hash code(将物件内的某些资讯转换为几乎独一无二的int)用以代表那个物件,利用hashCode()来快速找到key

[color=red]你无法将基本数据类型置入容器内,只有object reference才行[/color]
如果你在[color=red]HashMap中使用你自己撰写的classes作为key,你一定得同时覆写hashCode()和equals()[/color].因为,Object的hashCode()会被用来产生每个对象的hash code,而且在预设情况下它直接使用其对象的内存位址,HashMap会通过equals(),试着判断你所给定的key是否等于表格中的某个key,而Objects.equals()只会比较对象的内存位址
[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值