一、java数据结构

数据结构按照逻辑关系(数据组织方式)主要划分为以下四类:1.集合2.线性结构3.树结构

4.图结构

常用集合类主要分为Collection和Map两大分支。

java毕业设计中数据流图应该在哪里加 java 图 数据结构_java毕业设计中数据流图应该在哪里加


java毕业设计中数据流图应该在哪里加 java 图 数据结构_Java_02


1.1 List

Java中使用List接口描述线性结构,其实现类使用最频繁的有ArrayList(数组线性表)和LinkedList(双向链表)

1.ArrayList: 元素单个,效率高,多用于查询

2.Vector: 元素单个,线程安全,多用于查询

3.LinkedList:元素单个,多用于插入和删除

1.1.1 ArrayList

ArrayList使用连续的内存单元存储数据元素,当添加或删除数据元素时(除数组线性表的最后位置外),ArrayList需要移动其被添加(或删除)元素后面的全部元素。在遍历所有元素方面,ArrayList具有很好的效率,因为其数据元素的连续性,所有只需要获取到第一个元素的地址,再使用地址指针下移的方式即可获取全部元素。

1.ArrayList适合存储经常用于显示的数据,并且不对查询结果进行修改,而仅仅是用于客户显示。

2.如果我们只是在ArrayList的末尾进行添加(或删除)操作,可以使用ArrayList。

1.1.2 LinkedList

LinkedList是使用指针关联的双向链表,其获取下一个元素的方式是通过指向下一个元素的地址对象(通常叫做指针)获取的,由于它的链式存储结构,LinkedList在任意位置的元素插入(或删除)效率都比较快,因为元素插入(或删除)不需要移动LinkedList中的其它元素,当需要一个频繁插入(或删除)的线性结构时,首选的List实现类应该是LinkedList。

1.1.3 ArrayList与LinkedList区别

1.LinkedList对于ArrayList来说,其遍历速度较慢,因为他获取下一个元素的时间为寻址时间。

2.LinkedList适合存储数据元素变动较大的线性集合,可以更快速的对指定位置的元素进行增加、删除、修改功能。

**1.2 Set

Java中使用Set接口描述一个集合,集合Set是Collection的子接口,Set不允许其数据元素重复出现,也就是说在Set中每一个数据元素都是唯一的。

HashSet : 为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。

TreeSet : 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。

LinkedHashSet : 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

1.2.1 HashSet

HashSet通过Hash算法排布集合内的元素,所谓的Hash算法就是把任意长度的输入(又叫做预映射),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射。对于不同类型的信息,其散列值公式亦不完全相同。

HashSet在判断数据元素是否重复时:

  1. 检查hashCode值是否与集合中已有相同。
  2. 如果hashCode相同再调用equals方法进一步检查。(equals返回真表示重复)

1.3Map
Java中使用Map接口描述映射结构,映射Map是一个独立的接口,描述的是键key-值value的对应关系,Map不允许键重复,并且每个键只能对应一个值。
HashMap : Map基于散列表的实现。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量capacity和负载因子load factor,以调整容器的性能。
LinkedHashMap : 类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。
TreeMap : 基于红黑树数据结构的实现。查看“键”或“键值对”时,它们会被排序(次序由Comparabel或Comparator决定)。TreeMap的特点在于,你得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。