数据结构

常用的数据结构

      数据存储常用结构有:栈、队列、数组、链表和红黑树。


链表:linked list,由一系列节点(链表中每个元素都被称为节点)node组成,        结点在运行时动态生成。每个节点包括两部分:存储数据的数据域和指向下一个节点的指针域。特点查找慢(只能通过节点依次往后查找),增删元素快(只需修改链接下个节点的内存地址即可)

Collection--最基本的集合接口,有两个子接口

List

--是一个有序的接口,能够精确的控制每个元素插入的位置,允许有相同元素

set

  元素无序,元素不可以重复

List接口的三个典型实现

List list=new ArrayList();单向链表结构,底层数据结构是数组,查询快,增删慢,线程不安全,效率高

List list=new Vector();底层数据结构是数组,查询快,增删慢,线程安全,效率低,几乎淘汰

List list=new LinkList()双向链表结构;底层数据结构是链表,查询慢,增删快,线程不安全,效率高;

set接口的三个典型实现

HashSet--无序,不可重复的集合,底层采用哈希表算法,不是线程安全的,是按照哈希值来存的,取数据时也是按照哈希值来取,会通过元素的HashCode和equals判断元素是否重复

LinkHashSet--不可重复,有序,底层采用链表和哈希表的算法,链表保证添加顺序,哈希表保证元素唯一性

TreeSet--有序,不可重复,底层采用红黑树算法,擅长于范围查询;

该集合排序的两种方式:

1.让元素自身具备比较性,实现Comparable接口,覆盖CompareTo方法

2.让容器自身具备比较性,自定义比较器,定义一个类实现Comparator接口,覆盖Compare方法

LinkHashSet--底层采用哈希表算法--红黑树算法

map--key不允许重复,value可以,是两个集合之间的映射关系;

HashMap--非线程安全,底层采用哈希表算法,

TreeMap --非线程安全 ,底层采用红黑树算法

LinkHashMap--底层采用哈希表算法--红黑树算法

你可能感兴趣的:(数据结构)