Java常见的集合类之间的关系与特点

前言

做为一名程序开发人员,善用数据结构与合适的算法是写出一份具有高效性能的代码的基础,Java中最最基础的数据结构主要有三种,分别是数组、链表还有图,其中“图”这种数据用的比较少,像我们开发常用的集合同时都是由数组和链表演化而成。

集合框架

jdk为我们提供了集合类,像我们写代码最常用的ArrayList,HashMap都是集合,这里需要注意的是,像List,set,Queue都是实现的Collection接口,而Map则是一个独立的接口。
首先我们来讲讲List、Set、Queue、Map的区别及其具体实现类。

list:
List是一个接口,他最突出的特点就有序的,我们可以通过索引,类似于数组的下标,来访问List中的元素,而且List中允许存在重复的元素。

set:
set和list其实是十分相似的,他们都是实现了collection接口的,最显著的区别就是set中不允许存放重复的元素,这里我们要注意,当“null”作为一个元素存储的时候,set也只允许存放一个“null”元素。

queue:
queue是一个队列,他通常会与栈作为对象比较,栈的特点是先进后出,队列的特点则是先进先出。

map:
map则与以上数据结构有着显著的不同,首先他是以键值对的方式来存放数据的,也就是key-value的形式,其次他没有实现collection接口。

常用的结合实现类

首先我们拿list来说,最最常用的就是ArrayList,其次就是LinkedList,他们都是实现了AbstractList接口,同时实现这个接口的还有Vector,vector最主要的特点他是线程安全的,我们上文提到的栈(stack)就是继承了Vector这个类。

下面我们来看看set,set我们一般常用的有HashSet和TreeSet,其中HashSet类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。TreeSet也是实现Set接口,他的功能更偏向于排序。不过数据结构用多了我们就会发现,凡是用到Tree的都离不了排序和查找,这要从Tree的特点来说。

再继就是Map,最最常见的莫属HashMap,他也是面试中最具有代表性的,再就是TreeMap,LinkedHashMap,其中HashMap、TreeMap都是AbstractMap的子类,LinkedHashMap则是HashMap的子类。像Map还有一个较为常用的线程安全的map:ConcurrentHashMap,他也是AbstractMap的子类同时实现了ConcurrentMap接口。

最后就是Queue了,他是队列,常用的有阻塞队列,双端队列等,这里就不做深入了解了。

以上就是我们常用的集合,如果大家对集合感兴趣或者相对某个集合有想更深入的了解,欢迎关注我的微信公众号,我们一起来进行学习研究。
Java常见的集合类之间的关系与特点_第1张图片

你可能感兴趣的:(java,集合,java,数据结构,链表,队列)