JAVA集合小结
Posted onJAVA集合小结
[首页](http://www.blogjava.net/EvanLiu/) [新随笔](http://www.blogjava.net/EvanLiu/admin/EditPosts.aspx?opt=1) [联系](http://www.blogjava.net/EvanLiu/contact.aspx?id=1) [聚合](http://www.blogjava.net/EvanLiu/rss)[![]()](http://www.blogjava.net/EvanLiu/rss) [管理](http://www.blogjava.net/EvanLiu/admin/EditPosts.aspx)
随笔 - 37 文章 - 11 trackbacks - 0
常用链接
留言簿(2)
随笔分类
- CSS(3)")
- DB(3)")
- EJB
- Hibernate
- HTML(3)")
- ibatis
- Java基础(11)")
- JS(3)")
- JSP(1)")
- Spring(1)")
- Struts(2)")
- Struts2(1)")
- Swing
- 设计模式(7)")
随笔档案
- 2009年3月 (1)
- 2009年2月 (1)
- 2008年8月 (5)
- 2008年6月 (2)
- 2008年5月 (1)
- 2008年4月 (1)
- 2008年3月 (1)
- 2008年2月 (2)
- 2008年1月 (7)
- 2007年12月 (1)
- 2007年11月 (4)
最新评论
- 1. re: Oracle分页SQL[未登录]
- @aegean select /* from bill_account_book where rownum > 10 这个是明显的错误
- --test
- 2. re: Oracle分页SQL
- 我觉得你现在的第一条语句没什么错误啊
- --aegean
- 3. re: 一个失败了的需求--button模拟file提交数据
- grdgvf
- --htf
- 4. re: Oracle分页SQL
- 收下了 正在愁人呢 不错 谢啦
- --路人甲
- 5. re: ThreadLocal学习
- ThreadLocal的文章小弟这是第一次看到... 之前学hibernate的时候, myeclipse自动生成的SessionFactory里也看到这个方法, 呵 学习学习
- --gouflv
阅读排行榜
- 1. java.util.ConcurrentModificationException(5307)
- 2. Oracle分页SQL(3697)
- 3. JAVA集合小结(2831)
- 4. struts validate之ValidatorActionForm(709)
- 5. struts validate之ApplicationResources.properties内容读取乱码(570)
评论排行榜
- 1. Oracle分页SQL(6)
- 2. String StringBuffer(2)
- 3. 一个失败了的需求--button模拟file提交数据(1)
- 4. JAVA集合小结(1)
- 5. ThreadLocal学习(1) JAVA集合小结
下面是我自己画的,关系画得没上面好,但我自己看着清楚些
还有一张下载来的: 有序否
允许元素重复否 Collection
否
是 List
是
是 Set
AbstractSet
否
否 HashSet TreeSet
是(用二叉树排序) Map
AbstractMap
否
使用key-value来映射和存储数据,Key必须惟一,value可以重复 HashMap TreeMap
是(用二叉树排序)
几个面试常见问题:
1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
A:Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。
2.Q:大致讲解java集合的体系结构
A:List、Set、Map是这个集合体系中最主要的三个接口。
其中List和Set继承自Collection接口。
Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。
List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。
Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。
SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。
3.Q:Comparable和Comparator区别
A:调用java.util.Collections.sort(List list)方法来进行排序的时候,List内的Object都必须实现了Comparable接口。
java.util.Collections.sort(List list,Comparator c),可以临时声明一个Comparator 来实现排序。
Collections.sort(imageList, new Comparator() {
public int compare(Object a, Object b) {
int orderA = Integer.parseInt( ( (Image) a).getSequence());
int orderB = Integer.parseInt( ( (Image) b).getSequence());
return orderA - orderB;
}
});
如果需要改变排列顺序
改成return orderb - orderA 即可。
4.Q:简述equals()和hashCode()
A:...不知道。下回分解
public interface
Collection
extends Iterable
public interface
List
extends Collection
public abstract class
AbstractList
extends AbstractCollection
implements List
public class
Vector
extends AbstractList
implements List,
RandomAccess,
java.lang.Cloneable,
java.io.Serializable
基于Array
是“sychronized”的
public class
ArrayList
extends AbstractList
implements List,
RandomAccess,
Cloneable,
java.io.Serializable
**基于Array
ArrayList是非同步的。所以在性能上要比Vector优越一些
public class
LinkedList
extends AbstractSequentialList
implements List,
Queue,
Cloneable,
java.io.Serializable
不基于Array
基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作
List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别
public abstract class AbstractSet
extends AbstractCollection
implements Set
public class HashSet
extends AbstractSet
implements Set, Cloneable, java.io.Serializable
HashSet的存储方式是把HashMap中的Key作为Set的对应存储项
public class LinkedHashSet
extends HashSet
implements Set, Cloneable, java.io.Serializable
public class TreeSet
extends AbstractSet
implements SortedSet, Cloneable, java.io.Serializable
**它是通过SortedMap来实现的
public interface Map
**解析Java对象的equals()和hashCode()的使用: http://www.blogjava.net/EvanLiu/archive/2007/11/12/tmsoft.lsxy.com/index.php?id=82&load=read**
posted on 2007-11-12 10:06 EvanLiu 阅读(2831) 评论(1) 编辑 收藏 所属分类: Java基础
/# re: JAVA集合小结 2008-03-23 20:49 矿矿
不 大 懂 我是新手!! 回复 更多评论 Copyright ©2010 EvanLiu Powered by: 博客园 模板提供:沪江博客