程序=算法+数据结构,选择了数据结构,算法也随之确定。数据结构是计算机存储、组织数据的方式,通常包括逻辑结构和物理结构。其中逻辑结构指反应数据元素前后件间的关系,与它们在计算机中的具体物理位置无关;而物理结构指数据元素在计算机存储空间的存放方式。本文主要探讨Java中数据逻辑结构。
Java Collections称为容器,用来存储一组对象,并给用户提供大量的集合接口以及这些接口的实现类和操作对象的算法。具体而言,该框架主要提供了List(列表)、Queue(队列)、Set(结合)、Stack(栈)、Map(映射表,用于存放键值对)等数据结构。
下图描述了Java容器这部分的框架信息。

详细的操作方法或具体步骤
Collection接口定义了存取一组数据对象的方法,如下图所示。Set、List和Map定义了数据对象的存储方式。下面详细介绍Set、List和Map三个接口。

Set接口
Set中的数据对象没有顺序且不可重复,类似于数学中的集合的概念。因此存入Set中的数据对象必须重载equals()方法来确保对象的唯一性。
HashSet和TreeSet实现了Set接口。其中TreeSet实现了SortedSet 接口,因此TreeSet容器中的元素是有序的。
List接口
List中的数据对象有序且可以重复。ArrayList和LinkedList实现了List接口。两者均为可伸缩数组,即可以动态改变长度的数组。而且,两者都是非线程安全的容器。
其中ArrayList是基于存储元素的Object[] aray来实现的,它们会在内存中开辟一块连续的空间来存储,由于数据存储是连续的,因此支持用下标来访问元素,同时索引数据的速度比较快。但插入元素是需要移动容器中的元素,所以对数据的插入操作执行的比较慢。
LinkedList是采用双向链表来实现,对数据的索引需要从头开始遍历,因此用于随机访问速率比较低,但是插入元素时不需要对数据进行移动,因此插入效率高。
Map 接口
Map提供了一个从键映射到值得数据结构。用于保存键值对,其中只可以重复,而键不可以重复。HashMap、HashTable和TreeMap都实现该接口。
HashMap是一个最常使用的Map,他根据键的HashCode指存储数据,根据键可以直接找到它的值,具有很快的访问速度。HashTable也是使用hash法进行索引,二者具有很多相似之处。两者也有很多的区别,如下:
1)HashMap是非线程安全的,而HashTable是线程安全的。
2)HashMap允许有且仅有以各键值为空,而HashTable不允许键值为空。
3)HashMap使用Iterator遍历,而hashTabel使用Enumeration
TreeMap实现了SortMap接口,因此能够把它保存的记录根据键排序。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本教程系本人依照真实经历原创,未经许可,谢绝转载。- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
