Java面试——基础——容器——Java 容器都有哪些?

一、Java容器整体类图如下:

这里写图片描述
从上图中可以看出,集合类主要分为两大类:Collection和Map。

一、Collection

Collection是List、Set等集合高度抽象出来的接口,它包含了这些集合的基本操作,它主要又分为两大部分:List和Set。

1.List:

List接口通常表示一个列表(数组、队列、链表、栈等), List是一个有序的集合,其中的元素可以重复,访问集合中的元素可以根据元素的索引来访问,常用实现类为ArrayList和LinkedList,另外还有不常用的Vector。另外,LinkedList还实现了Queue接口,因此也可以作为队列使用。

  • (1)ArrayList :基于数组实现,查询快,增删慢
  • (2)LinkedList:基于链表实现,查询慢,增删快
  • (3)Vector:基于数组实现,线程安全,有性能问题,很少使用

2.Set

Set接口通常表示一个集合,其中的元素不允许重复(通过hashcode和equals函数保证),访问集合中的元素只能根据元素本身来访问(也是集合里元素不允许重复的原因)。常用实现类有HashSet和TreeSet,HashSet是通过Map中的HashMap实现的,而TreeSet是通过Map中的TreeMap实现的。另外,TreeSet还实现了SortedSet接口,因此是有序的集合(集合中的元素要实现Comparable接口,并覆写Compartor函数才行)。

  • (1)HashSet:基于HashMap 实现,无序,不重复
  • (2)TreeSet :基于TreeMap 实现, 有序,不重复

二、Map

Map是一个映射接口,其中的每个元素都是一个key-value键值对,访问时只能根据每项元素的key来访问其value。同样抽象类AbstractMap通过适配器模式实现了Map接口中的大部分函数,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,另外,不常用的HashTable直接实现了Map接口,它和Vector都是JDK1.0就引入的集合类。

  • (1)HashMap: 基于数组和链表(链表超过一定长度则变为红黑树)实现,随机存取
  • (2)TreeMap:基于红黑树实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-乾坤-

????????????????????????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值