黑马程序员技术交流社区

标题: 关于集合的问题 [打印本页]

作者: --_.Is’攸稀    时间: 2013-11-10 17:37
标题: 关于集合的问题
本帖最后由 --_.Is’攸稀 于 2013-11-10 22:36 编辑

好不容易看完所有有关集合的视频,开始总结的时候发现忘得也差不多了,只能靠写些练习熟悉熟悉,刚写练习的时候就碰到问题:
是不是集合都是各有自己的用处的,如果需要排序的话,只能用set集合,不用list?



自己解决了~用list集合的话就用Collections的sort()的方法就可以了>Collections.sort(c1);


作者: hubby    时间: 2013-11-10 17:43
{:soso_e127:}我也是刚看的视频,不过我觉得的先搞清楚list是有角标的,可以操作角标排序,而set里面有个二叉树排序好像。。还有set里面元素不可重复。我还没总结完集合。。等我总结完了给你借鉴一下{:soso_e130:}
作者: --_.Is’攸稀    时间: 2013-11-10 17:57
hubby 发表于 2013-11-10 17:43
我也是刚看的视频,不过我觉得的先搞清楚list是有角标的,可以操作角标排序,而set里面有个二 ...

虽然没回答我的问题,不过先谢谢了。
作者: 零下五度的水    时间: 2013-11-10 18:14
帮你总结一下
集合的超类是 Collection, 它有一个静态工具类 Collections,分为 List, Set 两条分支
其实集合最好是和 Map 一起记
List:列表,有序,可重复
常用 List:ArrayList,Vector(ArrayList线程安全版),LinkedList(链表)
Set:概念类似数学中的集合,无序,不可重复
常用 Set:HashSet(Hash支持,见Map),TreeSet(有序的)
Map:不属于 Collection,概念类似字典(Dictionary),键值对(K-V),无序,不可重复,
        内存中按照Hash算法存储,其实并非无序,而是按照特定顺序(Hash值),
        所以必须要重写 HashCode 方法,Hash又叫散列(分散排列),这个最好要知道
常用 Map:HashMap,HashTable(HashMap线程安全版)
P.S.
Collection & Map.Entry 都支持迭代器(Iterator),用以遍历数据

至于你的问题,排序可以用List,可以用TreeSet
因为他们实现了Comparable/Comparator接口(只要实现了这组接口的其中一个都可以排序)
作者: --_.Is’攸稀    时间: 2013-11-10 18:36
零下五度的水 发表于 2013-11-10 18:14
帮你总结一下
集合的超类是 Collection, 它有一个静态工具类 Collections,分为 List, Set 两条分支
其实 ...

超类不是迭代器吗?另外想问下你说list TreeSet只要实现了Comparable/Comparator就可以排序了,TreeSet我懂是默认实现,要改的话TreeSet<String> c1=new TreeSet<String>(new LenComparator());在LenComparator类里实现Comparator接口再覆盖,那list怎么弄呢?
作者: 薛淑凯    时间: 2013-11-10 19:06
--_.Is’攸稀 发表于 2013-11-10 18:36
超类不是迭代器吗?另外想问下你说list TreeSet只要实现了Comparable/Comparator就可以排序了,TreeSet我 ...

list中你存入时候什么顺序就是什么顺序,可以把他看成一个数组就行
作者: Sasson    时间: 2013-11-10 20:34
{:soso_e105:}明天才看能看到集合
作者: 月生春    时间: 2013-11-10 21:10
也不是,list就可以对字符串进行提取操作
作者: 零下五度的水    时间: 2013-11-11 00:31
迭代器只是相当于一个工具,使集合遍历起来方便一点,
说Collection是超类是概念上的,List 和 Set 相当于拥有某种特质的 Collection
自定义比较器(Comparator)一般不用在已经写好的类上。。。
是说你要是自己写一个List or Set 的子类可以直接实现这个,
你要是想自定义排序的话,Collections.sort 有一个传入自定义比较器的方法,
直接用那个方法排序就是了,反正只要是api自带的排序方法,
默认的一定Comparable,然后必然有一个Comparator为参数的重载方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2