从0理解八股文(8)

一.java的容器有哪些

1.列表(List):可以存储一些有序的元素,并且可以根据索引和操作,常见的实现类有ArrayList和LinkedList(LinkedList也是队列)

2.集合(set):用于存储一组独一无二的数据不能重复存进来,常见的有Hash算法的Hashset和TreeSet,TreeSet是安全的

3.队列(Queue):可以按照先进先出的原则对元素进行操作。常见的有LinkedList和PriorityQueue。

4.栈(Stack):可以按照先进先出的原则对元素进行操作。常见的类有Stack(栈和队列的描述差不多啊?他俩有啥区别吗?确实他俩都遵循的先进先出的原则,但是他栈的添加叫入栈,删除叫出栈,而队列的删除叫出列,添加叫入列。这位就要问了,你也不也是一样的吗?对但是他俩的入的方式不一样栈的话是从头部加进去的而队列是排队的他后进来的就要去后面排队不然会挨揍。)

5.映射(Map):存储键值对(key-value)的数据结构,以键为唯一标识,常见的实现类有HashMap和TreeMap(为什么HashMap没有TreeMap安全呢?他俩的安全性是指的在多线程的情况下的线程安全性。HashMap是非线程安全的,这意味着如果多个线程同时对这个HashMap进行操作会导致数据不统一的情况,因为HashMap在内部使用的数组加链表实现的或者数组和红黑树,当进行插入或者删除等操作的时候,可能会导致元素的重新哈希或者改变链表的结构,从而影响其他线程的操作。)

6.数组(Array):一种固定大小的有序集合,可以存储多个相同的类型的元素。

二.HashMap和HashTable有什么区别?

hashMap去掉了HashTable的contains方法,但是加上了containsValue()和ContainsKey()方法。(contains方法用于判断一个字符串或者一个集合是否包含指定的字符序列或者元素,他会返回有布尔值来判断是否包含现在HashMap中替换成了这个值是否包含,键是否包含)

hashTable要同步的,而HashMap不需要同步索引他比HashTable快

(HashTable的同步是指他线程是安全的,他的实现使用了synchronized关键字来保证在多线程的环境下的线程安全性,在多个线程一起操作HashTable时,他会通过锁机制保证同一时间只有一个线程能操作HashTable,其他的线程因为有了锁的限制,所以需要等待,这样可以避免多个线程同时对HashTable进行多人操作导致的数据不一致的问题所以会因为同步参数额外的操作,所以HashTable的性能会比HashMap低一些。)

三.如何去决定什么情况下使用HashMap还是TreeMap?

对于在Map中插入删除修改查找当然HashMap是一个很好的选择,但是你如果需要对一个有序的Key集合进行遍历,TreeMap是更好的选择。基于你的Collection的大小,也许HashMap中添加元素会更快,将map换成TreeMap进行有序的快速key的遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值