各位大神好,我来求教集合的一些问题。ArrayList、LinkedList、Stack、Queue、HashSet、TreeSet、HashMap,TreeMap以上八个集合,请分别指出具体的使用场景。他们的区别和作用我都明白,但是我无法形象理解。请大神给我指点,在实际开发中,这八个集合分别在开发哪个功能的时候会用到,方便我形象的理解他们的作用。叩谢。
解决方案 »
- 求socket代码
- SOS~~希望大家给力啊!“01”字符串与byte转换出问题!小妹感激不尽
- 讨教在MyEclipse里面写JSP的问题
- 效率与架构的关系问题
- java client端的socket默认是阻塞的吗?如果我不断的发送数据给server,也就是只write(),发现连者发送的数据有的发送了,有的没有发送,请问
- 有人知道吗?关于轻组件的事情
- 谁有在一个class中包含有多个sql语句的例子(最好操作涉及2个以上的表)
- JBuilder6.0中How to 打包成war文件!请详细点说,我是新手!
- java的网络编程
- java的小问题?
- php运行jar包时出现的一个奇怪的现象
- applet与application的源代码各自什么特点?(新手问题)
HashSet、TreeSet
HashMap,TreeMap
分为3组,在作为同一接口的实现使用时没有功能上的差异,只有性能上的差异。List,使用最广的集合,特点是有序,可重复。Map,这个使用也比较多,也比较特殊,因为它没有实现Collection接口,比如用于映射对象,映射数据库。比如某工具可以将对象映射为Map<String,Object>类型,便于转换为json。某框架可以将数据库数据映射为List<Map<String,Object>>类型。List+Map+基本数据类型已经可以用于表示很多复杂的数据类型。Set,特点是无序不重复(重复基于你如何重写equals()方法)。举一个我在项目中用到的例子,我需要遍历某一个图(图是顶点与边的集合),从某个顶点开始,使用广度优先的遍历,遍历出来的顶点再向下一级进行遍历。如果我使用List存放已经遍历过的顶点的话,对于图中如果存在环的话,那么将回到你遍历过的顶点从而导致死循环。这样就需要使用Set存放顶点和边。我的图可以定义为Map<String,Set<?>>类型
(new xxMap("顶点",Vertex)和 new xxMap("边",Edge))。以上2种集合一般用到Hash实现比较多,但是要注意如果要正确使用Hash存储,需要你重写正确的hashCode()方法。Stack和Queue我也用得比较少。使场景用如其名:栈和队列栈比较经典的应用有比如括号匹配
队列就更容易理解了,比如很多人去买票,但是售票窗口只有那么几个,把所有人放入队列里面,先进去的能够先买到票。值得一提的是LinkedList也是Queue的一种实现。