map for循环_Collection接口,Map接口

50718f98e443031c9ed39743344b1714.png

Collection 表示一组对象,它是集中、收集的意思。Collection接口的两个子接口是List、Set接口。

常用的方法:

a5e5980c0dae5bc9e2a5af734294fb5e.png

由于List、Set是Collection的子接口,意味着所有List、Set的实现类都有上面的方法。

public 

List是有序、可重复的容器。

有序:List中每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。

可重复:List允许加入重复的元素。更确切地讲,List通常允许满足 e1.equals(e2) 的元素重复加入容器。

8a9070387cf0363d6ceacb2c0c416a55.png
public 

LinkedList

LinkedList底层用双向链表实现的存储

特点:查询效率低,增删效率高,线程不安全。

双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向前一个节点和后一个节点。 所以,从双向链表中的任意一个节点开始,都可以很方便地找到所有节点。

dcbe0690603a20018ad1b272cecc5ed0.png

Vector底层是用数组实现的List,相关的方法都加了同步检查,因此“线程安全,效率低”。 比如,indexOf方法就增加了synchronized同步标记。

public 

面试题:ArrayList、LinkedList、Vector有什么区别?

ArrayList底层是数组实现的,实现了数组的动态扩容,其查找效率较高,添加删除效率较低,非线程安全

LinkedList底层是采用双向链表进行实现的,查找效率较低,添加删除效率较高,非线程安全

Vector底层和ArrayList底层实现一样,效率较低,但适合在多线程程序中使用,线程安全

Map接口

Map就是用来存储“键(key)-值(value) 对”的。 Map类中存储的“键值对”通过键来标识,所以“键对象”不能重复。

Map 接口的实现类有HashMap、TreeMap、HashTable、Properties等。

9f898b87bf74f497fe1391319f44561c.png
public 

HashMap采用哈希算法实现,是Map接口最常用的实现类。 由于底层采用了哈希表存储数据,我们要求键不能重复,如果发生重复,新的键值对会替换旧的键值对。 HashMap在查找、删除、修改方面都有非常高的效率。

HashTable类和HashMap用法几乎一样,底层实现几乎一样,只不过HashTable的方法添加了synchronized关键字确保线程同步检查,效率较低。

HashMap与HashTable的区别

1. HashMap: 线程不安全,效率高。允许key或value为null。

2. HashTable: 线程安全,效率低。不允许key或value为null。

数据结构中由数组和链表来实现对数据的存储,他们各有特点:

数组:占用空间连续。 寻址容易,查询速度快。但是,增加和删除效率非常低。

链表:占用空间不连续。 寻址困难,查询速度慢。但是,增加和删除效率非常高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值