java面试题基础之集合篇
java面试题基础之集合篇
1、ArrayList和Vector的区别
参考:https://www.cnblogs.com/javaisbest/p/11795444.html
2、HashMap和Hashtable的区别
二者都是Map的实现类,且底层都是哈希表,他们的区别有以下几点:
父类不同:
HashMap的父类是AbstractMap,HashTable的父类是Dictionary
初始化容量和扩容量不同:
HashMap初始化容量为16,按2倍扩容;HashTanle初始化容量为11,按2倍+1扩容
键和值是否可以为null:
HashMap可以,HashTable不行
线程安全上:
HashMap不是线程安全的,HashTable是线程安全的
3、List和 Map区别?
List集合是Connection集合的子接口
存取数据的方式不同:
List集合是单个存取,且存值是有序可重复的;而Map集合是根据键值对进行存取,键是无序不可重复的,值可以重复
4、List,Set, Map是否继承自Collection接口?
在java中的集合有两大接口:Map和Connection,其它所有集合都是他们的实现类
所以,List集合和Set集合继承了Connection接口的,而Map集合不是
5、List、Map、Set三个接口,存取元素时,各有什么特点?
存元素:
List:单个存取,且元素的值有序可重复
Map:键值对存取,键是无序不可重复的,值可以重复
Set:单个存取,元素的值无序不可重复
取元素:
List取出元素for循环,foreach循环,Iterator迭代器迭代
Map取出元素需转换为Set,然后进行Iterator迭代器迭代,或转换为Entry对象进行Iterator迭代器迭代
Set取出元素foreach循环,Iterator迭代器迭代
6、说出ArrayList,Vector,LinkedList的存储性能和特性
ArrayList和Vector底层是数组,用数组方式存储数据,这种方式查询速度快,修改、删除操作慢。
LinkedList底层是双向链表,将对象存放在独立的空间中,这种方式修改数据快,查询数据慢。
7、去掉一个Vector集合中重复的元素
运用Set集合的不可重复性
8、Collection和Collections的区别。
Collection是集合类的一个接口,其中包含了对集合类功能的实现和一些基本操作,有子接口List和Set
Collections是一个类,是针对集合操作的工具类,其中包含对集合进行排序和二分查找的方法
9、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
从定义上来看:
equals是一个方法,==是一个关系运算符
当比较对象为基本数据类型时:
只能用==
当比较对象为引用数据类型时
==:比较的是两个引用是不是指向同一个内存地址
equals:比较的是两个引用的字面值是不是相同,什么叫字面值?你能看到的值就是字面值,比如:String s="abc"; abc就是字面值.
由于Set集合中存放的是对象的引用,而需要比较的是引用的值是否相同,所以说用equals
10、你所知道的集合类都有哪些?主要方法?
java中的集合类有两大接口:Connection集合、Map集合
Connection集合的两大实现类:List集合、Set集合
List集合的实现类:ArrayList、Vector、LinkedList
Set集合的实现类:HashSet、TreeSet
Map集合的实现类:HashMap、HashTable、TreeMap
Connection集合的主要方法:
add():向集合中添加元素
isEmpty():集合是否为空
size():判断集合中元素个数
contains(元素名称):判断该元素是否存在
remove(元素名称):删除该元素
toArray(数组名):将集合转为数组
Set集合由于实现了Connection接口,参考Connection
相对于Collection,List增加了索引值的操作(索引值从0开始):
add(索引值,添加的内容):指定的索引值处添加数据
indexOf(查找的内容)/lastIndexOf(查找的内容):返回元素第一次/最后一次出现的位置的索引值:
get(索引值):返回指定位置的元素
ArrayList、Vector实现了List接口,参考List
但LinkedList由于是双链表,比较特殊:
模拟栈(先进后出):进栈和出栈:push()、pop()
模拟队列(先进先出):进队和出队:offer()、poll()
Map集合常用方法:
put():添加元素
replace():替换
remove(键)/remove(键,值):删除(前者:只要“键”匹配,则会直接删除键值对;后者:需要“键”、“值”都匹配才会删除键值对)
size():判断集合的个数
get(键):查询;根据“键”查询“值”,如果“键”不存在,则输出null;
containsKey(键)/containsValue(值):查询键/值是否存在
keySet():返回所有键的集合
变量.Values():返回所有值得集合
entrySet():返回所有Entry的集合
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步