java 板


LINE

※ 引述《adrianshum (Alien)》之铭言: : 与是不是 array 没关系. : 为什麽内部用 array 放就不可以 add remove? 举这个例子是因为 array 不能动态改变 size, 所以如果需要 add, remove, 就必须像 java.util.ArrayList 那样偷偷动些手脚。 而 Arrays$ArrayList 在操作後, 其内容仍然会与原先传入的 array 相同。 (因为根本是同一个 array) 也就是说我可以利用 Arrays.asList() 得到 List 物件後对它进行操作, 之後直接存取 array 时就已经是被操作过後的物件, 而不需要再用 array = list.toArray()。 在不破坏上面这个特性的前提下, 如果 Collection 的内部是用 array, 那就一定不能 add, remove。 这是我当初的那样说的想法,不过好像不是很重要 :p : 单纯只是那个是一个 unmodifiable list 而已吧. : 既然是一个 non-modifiable list, 当然不让你 : 去增删里面的 elements. : 是不是合理的 OO 设计, 这就见仁见智了. 反正 : 它的 contract 也说明了容许 implementation : 不支援某些功能的话, 也不可以说有多错... : 或者有人会觉得把 add/remove 放到一个叫 ModifiableList : 的 interface, 但我想当初设计上不这样做, 是 : 多 了这一层的 interface, 用起来就会很麻烦. : 反正 90% 情况下用 collection 都是不需要特 : 定当做 unmodifiable 来使用, class hierarchy : 搞得太复杂, 用起来会很混乱, 究竟什麽时候 : parameter 要宣告用 modifiable list 什麽时候 : 要用 (unmodifiable) list 呢? 诸如此类... 感谢前辈的指点。 这里节录一下 AbstractList 的 API 说明: To implement an unmodifiable list, the programmer needs only to extend this class and provide implementations for the get(int) and size() methods. To implement a modifiable list, the programmer must additionally override the set(int, E) method (which otherwise throws an UnsupportedOperationExce- ption). If the list is variable-size the programmer must additionally override the add(int, E) and remove(int) methods. 其实 Arrays.ArrayList 有提供 set method, 所以他应该是一个 non-variable-size 的 modifiable list。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.183.199







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP