您的位置:首页 > 理论基础 > 数据结构算法

java系统学习(十四) --------数据结构

2015-09-30 17:45 495 查看

数据结构接口及实现

数据结构其实就是规定数据以何种形式存储,例如以队列的形式、以散列表的形式,还是以树的形式或者以图的形式。每一种存储方式都有不同的优势,因为每一种结构存储不同类型的数据,只要选择好相应的数据结构,那么读取或搜索数据将会更快、更准确。

将数据按一定的方式组织起来就是数据结构.它体现了数据与数据之间的关系。可以从两个角度来分类:一个是存储结构、另一个是逻辑结构。

数据结构接口的实质

数据是对客观事物的符号的表示是所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体来处理。一个数据元素由多个数据项组成,数据项是数据不可分割的最小单位。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一个二元组,记为:

data_ structure=(D,S)

其中D为数据元素的集合,S是D的关系的集合。

数据元素相互之间的关系称为结构。根据数据元素之间关系的不同特性,通常分为下列4类基本结构:

集合:数据元素同属一个集合

线性结构:数据元素间存在一对一的关系。

树形结构:结构中元素间是一对多的关系。

图(网)状结构:结构中元素间是多对多的关系。

数据结构又有逻辑结构和物理结构之分。

逻辑结构:数据元素之间存在的关系(逻辑关系)称为数据的逻辑结构。

物理结构:数据结构在计算机中的表示称为数据的物理结构。

一种逻辑结构可映射成不同的存储结构:顺序存储结构和非顺序存储结构(链式存储结构

和散列结构)。

实例熟悉接口

import java.util.*;
public class ArraylistTest
{
public static void main(String[]args)
{
ArrayList al=new ArrayList(); //创建对象al
al .add(”anson"); //添加元素到al
al .add(”John”);//添加元素到al
al .add("Tina”);//添加元素到al
for(int i=0;i<al .size();i++} //通过循环输出al中的元素
{
System.out.println(al.get(i));//输出元素
}
}
}


Collection集合接口与Iterator迭代接口

熟悉Collection集合接口

Collection接口是数据集合接口,它位于数据结构API的最上部。构成Collection的单位 ,被称之为元素。接口提供了添加、删除兀素等管理数据的功能。根据数据管理的方法不同,可将Collection接口分

成为3个部分,分别是:Map接口、Set接口 , List接口。

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection接口的实现类允许存储相同类型的元素,而另一些接口的实现类则不行;一些接口的实现类能排序,而另一些接[口的实现类则不行。Java API没有提供直接继承自Collection的类,但是提供了继承Collectionr接口的实现类。

所有实现Collection接口的类都必须提供两个标准的构造函数:

(1)无参数的构造函数,用于创建一个空的Collection

(2)带Collection参数的构造函数,用于创建一个新的Collection。这个新的Collection与传入的Collection拥有相同的元素。

List链表接口和Set接口

List接口和Set接口是两个非常有用的集合接口,日常开发中用到的数组和列表等数据结构,基本上都从这两个接口实现而来。

List接口是有序的Collection,使用此接口能够精确地控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似数组下标)来访问List中的元素,这类似于Java的数组。

与下面所提到的Set不同,List允许有相同的元素。

实现List接口的常用类有LinkedList和ArrayList。

Set是一种不包含重复元素的Collection ,即任意的两个元素e1和e2比较,结果都不相等.Set最多有一个null元素。

实现Set接口的常用类有HashSet和TreeSet

Map映射接口

Map没有继承Collection接口,其提供key 到value的映射。Map中不能包含相同的key ,每个key只能映射一个value。Map接口提供3种集合的视图,

Map的内容可以被当作一组key集合、一组value集合或一组key-value映射。

Hashtable散列表类

Hashtable继承Map接口.实现个key-value映射的散列表。任何非空的对象都可作为key或value添加数据使用put (key, value)方法,取出数据使用get( key )方法.

这两个基本操作的时间开销为常数。

HashMap散列映射类

HashMap和Hashtable类似,不同之处在于HashMap是非同步的.并且允许null,即null value和null key如将HashMap视为Collection时(values()方法可返回 Collection ) ,其迭代操作时间开销和HashMap的容量成比例。因此,迭代操作的性能相当重要,切记不要将HashMap

的初始化容量设得过高,或者将load factor设得过低。

Iterator迭代器接口

Java API提供了Iterator这个迭代器,通过该接口就可以实现各种集合元素的读取。Iterator接口中定义了以下3个方法。

hasNext( ):是否还有下一个元素。

next():返回下一个元素。

remove():删除当前元素。

常见问题

Collection集合接口和Collection集合类的区别

Collections是java.util下的类,它包含各种有关集合操作的静态方法。

Collection是java.util下的接口,它是各种集合结构的父接口。

List, Set, Map是否继承自Collection接口? List, Set是继承自Collection接口,Map不是继承自Collection接口。

ArrayList数组列表类和Vector存储类的区别

ArrayList和Vector的区别有两点:

同步性。Vector是线程安全的,是同步的;而ArrayList是线程不安全的,不是同步的。

数据增长。,1当需要增长时,Vector默认增长为原来一倍,而ArrayList却是原来的一半。

HashMap散列映射和Hashtable散列表的区别

答:二者都属于Map接口的类,作用都是将唯一键映射到特定的值上。HashMap和Hashtable的区别有2点:

HashMap类没有分类或排序 ,它允许一个null键和多个null值。

Hashtable类似于HashMap, 但是不允许null键和null值,它也比HashMap慢,因为它是同步的。

数据结构的种类有哪些

数据结构一般分为两大类.线性数据结构和非线性数据结构。线性数据结构包括线性表、队列、串、数组和文件;而非线性数据结构包括树、图等。

List链表接口和Set接口的区别

Set从Collection接口继承而来,但没有提供新的抽象的实现方法,Set不能包含重复元素。

List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。这里的有序就是指有顺序的排放,并不是排序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: