有没有人有一个好的经验法则,可以在不同的Java Collection接口实现之间进行选择,比如List、Map或Set?
例如,通常我为什么或在什么情况下更喜欢使用向量、ArrayList、Hashtable或HashMap?
发布于 2008-09-07 14:03:49
我总是在案例的基础上根据用例做出这些决定,例如:
然后我用一个简单的拿出了我方便的第5版Java,并比较了大约20个选项。它在第五章中有一些很好的小表格来帮助人们找出什么是合适的。
好吧,也许如果我即兴知道一个简单的ArrayList或HashSet就可以做到这一点,我就不会全部去查了。;)但是,如果关于我的延迟使用有任何一点复杂的东西,你可以打赌我在书中。顺便说一句,我认为Vector应该是“老式的”--我已经很多年没有用过了。
发布于 2013-07-02 16:19:11
我真的很喜欢这篇来自Sergiy Kovalchuk的blog entry的小抄

更详细的是Alexander Zagniotov的流程图,但不幸的是它是离线的。但是,Wayback Machine有a copy of the blog

摘自博客中关于评论中提出的问题的摘录:“本小抄不包括很少使用的类,如WeakHashMap、LinkedList等,因为它们是为非常具体或奇异的任务而设计的,在99%的情况下不应该选择它们。”
发布于 2008-09-07 14:17:46
我假设你从上面的答案中知道List,Set和Map之间的区别。为什么你会在他们的实现类之间做出选择是另一回事。例如:
列表
集:
映射: HashMap和TreeMap的性能和行为与Set实现是平行的。
不应使用Vector和Hashtable。它们是同步实现,在发布新的Collection hierarchy之前,因此速度很慢。如果需要同步,请使用Collections.synchronizedCollection()。
https://stackoverflow.com/questions/48442
复制相似问题