java中 先进后出的集合_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集合的不可重复性

b8fb6ea9d27ffac7c362254327018731.png

3680fb9433904b820ad40b1a08332498.png

8、Collection和Collections的区别。

Collection是集合类的一个接口,其中包含了对集合类功能的实现和一些基本操作,有子接口List和Set

Collections是一个类,是针对集合操作的工具类,其中包含对集合进行排序和二分查找的方法

9、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

从定义上来看:

equals是一个方法,==是一个关系运算符

当比较对象为基本数据类型时:

只能用==

当比较对象为引用数据类型时

==:比较的是两个引用是不是指向同一个内存地址

equals:比较的是两个引用的字面值是不是相同,什么叫字面值?你能看到的值就是字面值,比如:String s="abc"; abc就是字面值.

db1002c5a60e8bdf616a62c322263bab.png

由于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的集合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值