1.计算机科技的两大支柱

    1、数据结构

    2、算法

  程序=数据结构+算法

2.定义:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科

3.数据(Data):是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。

数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。

4.逻辑结构:

集合结构中的数据元素除了同属于一种类型外,别无其它关系。

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

树型结构结构中的数据元素之间存在一对多的关系。

图状结构或网状结构

5.数据结构的两种表达方式:

顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。

链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。

结构中的数据元素之间存在多对多的关系。

6.集合:

  1、什么是集合

通常情况下,把具有相同性质的一类东西,汇聚成一个整体,就可以称为集合。比如,用Java编程的所有程序员,全体中国人等。

  2、什么是集合框架

集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。

任何集合

框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

  3、集合框架对我们编程有何助益:它减少了程序设计的辛劳、它提高了程序速度和质量。

7.Collection 接口是一组允许重复的对象

   Set 接口继承Collection,但不允许重复,使用自己内部的一个排列机制。

  List 接口继承Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。

  Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。容器中的元素类型都为Object。从容器取得元素时,必须把它转换成原来的类型。

8.数组列表

  1、线性表是由n(n≥0)个相同类型的数据元素a1,a2,…,an组成的有限序列,

记作:LinearList={a1,a2,…,an} 其中,n表示线性表的元素个数,称为线性表的长度。

  2、线性表的顺序存储结构:

是用一组连续的存储单元顺序存放线性表的数据元

素,数据元素在内存的物理存储次序与它们在线性表中的逻辑次序是一致的,

即数据元素ai与其前驱数据元素ai-1及后继数据元素ai+1的位置相邻。

  3、为什么需要串行化:

希望ArrayList对象保存到文件中,以便于恢复使用。

9.链表

以单链表为存储结构,实现LinkedList的简化版,包括最常用的方法:

size();isEmpty();contains(Object o) ;indexOf(Object elem) ;add(Object o) ; remove(Object o) ;clear();get (int index) ;set (int index, Object element); get (int index); getFirst(),getLast(),removeFirst(),removeLast()等

10.简述LinkedList与ArrayList差别

如果应用程序对各个索引位置的元素进行大量存取/删除操作,ArrayList 对象要远远优于Linked List对象.  如果应用程序主要对列表进行循环,并且在循环的时候进行插入或者删除操作,LinkedList 对象要远远优于ArrayList对象.

11、队列

是元素的序列,在队列中:

(1) 只能在队列尾进行插入

(2)只能在队列头进行删除、获取和修改. 特点:先进先出;

12.栈

定义:

限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,(允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom);不含元素的空表称空栈;

特点:先进后出(FILO)或后进先出(LIFO);

13.堆栈:

是一个元素序列。堆栈中唯一能被删除、访问或修改的元素是最近插入的元素。这个元素就是位于堆栈顶部的那个元素。

TOP–最近插入的数据元素

PUSH–入栈,在栈顶插入一个数据元素

POP–出栈,删除栈顶的数据元素

14.映射:

映射( MAP )是一种集合,集合中的每个数据元素都由两部分组成: 唯一的键(KEY )部分和值( VALUE )部分。

Java中定义:

public interface Map将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如Tree Map 类;另一些映射实现则不保证顺序,如Hash Map 类。

15.TreeSet

1)TreeSet 对象是一个不允许元素重复的有序集合。

2)基本上TreeSet类的对象是所有元素都有相同值的TreeMap对象。

3)TreeSet 类和BinSearchTree类有相同的方法,但是TreeSet类比较快, 至少在最坏情况下.对于add, remove, 和contains, worstTime(n) log n, BinSearchTree 类是n的线性函数

 

java数据结构的更多相关文章

  1. Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用

    Java数据结构之---Queue队列 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在 ...

  2. JAVA数据结构系列 栈

    java数据结构系列之栈 手写栈 1.利用链表做出栈,因为栈的特殊,插入删除操作都是在栈顶进行,链表不用担心栈的长度,所以链表再合适不过了,非常好用,不过它在插入和删除元素的时候,速度比数组栈慢,因为 ...

  3. Java数据结构之树和二叉树(2)

    从这里始将要继续进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来 ...

  4. Java数据结构之树和二叉树

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  5. Java数据结构之线性表(2)

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  6. Java数据结构之线性表

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  7. java 数据结构 图

    以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客,主要是在自己理解的基础上进行记录. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示 ...

  8. java 数据结构 队列的实现

    java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作 /** * java数据结构之队列的实现 * 2016/4/27 **/ package cn.Link; import java ...

  9. java 数据结构 栈的实现

    java数据结构之栈的实现,可是入栈,出栈操作: /** * java数据结构之栈的实现 * 2016/4/26 **/ package cn.Link; public class Stack{ No ...

  10. Java数据结构和算法

    首先,本人自学java,但是只学习了java的基础知识,所以想接下来学习一下数据结构和算法,但是找了很多教材,大部分写的好的都是用c语言实现的,虽然知道数据结构和算法,跟什么语言实现的没有关系,但是我 ...

随机推荐

  1. SpringMyBatis解析4-MapperScannerConfigurer

    如果有成百上千个dao接口呢,那我们岂不是要配置添加成百上千个bean,当然不是这样,spring还为MyBatis添加了拓展的功能,可以通过扫描包目录的方式,添加dao,让我看看具体使用和实现. & ...

  2. js兼容方法:通过样式名获取元素,byClass

    function byClass(oParent,className){ if(document.getElementsByClassName){ //if it is Firefox return ...

  3. JavaOne_2016演讲视频:

    http://list.youku.com/albumlist/show?id=28553407&qq-pf-to=pcqq.group

  4. Codeforces 580D Kefa and Dishes(状压DP)

    题目大概说要吃掉n个食物里m个,吃掉各个食物都会得到一定的满意度,有些食物如果在某些食物之后吃还会增加满意度,问怎么吃满意度最高. dp[S][i]表示已经吃掉的食物集合是S且刚吃的是第i个食物的最大 ...

  5. iOS学习31之UITableVIewCell自定义

    1. 自定义Cell 1> 为什么要自定义Cell UITableView 中系统的Cell共提供了四种默认样式,  分别是: UITableViewCellStyleDefault UITab ...

  6. 使用CSS/JS代码修改博客模板plus

    之前对CSS/JavaScript了解还不深,只是把模板的CSS胡乱修改了几个属性.最近正好也在做一个网站的前端,学习了不少东西,再来改一改~ 上次最后之所以铩羽而归,是因为从CSS里找不到那些#和. ...

  7. hdu1251 统计难题 字典树

    Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己 ...

  8. CentOS下强行umount卸载设备

    fuser -cu /usr/local/tomcat7/webapps/dsideal_yy/html/down/ fuser -ck /usr/local/tomcat7/webapps/dsid ...

  9. ACM 心急的C小加

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...

  10. ACM: 限时训练题解-Epic Professor-水题

    Epic Professor   Dr. Bahosain works as a professor of Computer Science at HU (Hadramout    Universit ...