A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 万马奔腾 中级黑马   /  2014-6-1 20:10  /  1261 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 万马奔腾 于 2014-6-2 18:52 编辑

java中几种集合框架的区别?
各在什么情况下使用?
常用到的方法?

10 个回复

倒序浏览
自己总结吧,能总结出来也就会了,总得有个过程!
回复 使用道具 举报
大家同是菜鸟,一起努力吧!
回复 使用道具 举报
区别详解,没法详解,数据结构就够研究几个月的,不过要是把目标放在会用上,就容易多了,也无需了解底层,看看API文档,知道什么方法是干什么的会用就行了。  集合类巨多无比,其实常用的也就这么几个,其他的都不用太看,你就看看:ArrayList、LinkedList、HashMap、TreeMap、HashSet 就行了,我理解也有限,简单说一下这几个:  Collection下面有List和Set,List有ArrayList、LinkedList,ArrayList底层以Object类型数组实现,特点是查找很快,增加或删除操作很慢,这是由于数组的特点决定的,查找的时候因为有下标,所以你查第一个和查第1000个速度是一样的,直接就定位过去了,但是删除或者增加内容时,假如说一个ArrayList里面有1000个元素,现在把第一个元素删掉,那就出问题了,从第2个一直到第1000个元素都要 往前移动一个位置,这种移动是非常耗时而且效率是极其低下的。  LinkedList底层是以双向循环链表实现的,特点是查找很慢,但是增加和删除操作很快,双向循环链表里面所有元素都是一个一个连在一起的,查找第1000个,就要从第1个开始找到第2个,然后第3个.... 但是删除的时候,直接吧元素就删了,前后的两个元素之间在连起来,ok  了。  TreeMap,特点是按照key的升序保存键值对,因此插入的时候效率理论上稍慢写。  HashMap、HashSet,HashSet底层以HashMap实现,HashMap底层以数组实现,当向集合HashSet中使用add方法增加元素的时候,其实会向HashMap中增加一行(key-value),这个key就是增加到Set中的对象,value是一个Object对象,首先调用key的hashCode方法返回一个HashCode值,注意这并不是真正的物理地址,通过将这个值进行散列运算,得到一个int型的数,然后利用此数和数组的长度计算出一个数组的下标值,看看这个位置上有没有一个对象,如果没有直接增加进去一个Entry对象,如果有,那么接着将准备增加到集合中的key与该位置上的对象的key进行equals方法比较,如果该equals方法返回true,说明两个key的内容相同,会用新的value将旧的value替换掉,put方法会返回这个被替换掉的value,如果equals方法返回false,会调用当前位置上存在的那个Entry对象的next属性,寻找下一个Entry对象根这个Entry对象的key再进行equals比较.....  Vector和HashTable两个已经过时了,内部public方法都是同步的,所以效率极其低下,淘汰了,不过面试老考,郁闷。
回复 使用道具 举报
问题问的太大了,不好回答,先分开去理解每一种集合,再去比较它们之间的区别。
回复 使用道具 举报
首先,掌握集合的通用方法;
其次,掌握经常使用的集合子接口,和常用实现子类;
接着,掌握常用容器的特有常用方法;
然后,自己层层总结,常敲代码,增加手感,,,,
回复 使用道具 举报
有ArraList,HashTable,hashSet等,具体要根据项目需求来决定
回复 使用道具 举报
一般常用的好像是ArrayList,HashMap和HashSet
回复 使用道具 举报
这个面有点广   不是一时半会能理解的清楚的
回复 使用道具 举报
Autumn 发表于 2014-6-1 20:52
区别详解,没法详解,数据结构就够研究几个月的,不过要是把目标放在会用上,就容易多了,也无需了解底层, ...

非常感谢
回复 使用道具 举报
凌羽猎风 发表于 2014-6-1 22:59
这个面有点广   不是一时半会能理解的清楚的

是有点广
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马