两种数据结构都是线性表,在排序和查找等算法中都有广泛的应用 各自的特点: 数组: 数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中.同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素.如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组. 链表: 链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针…
数组:是将元素在内存中连续存储的:它的优点:因为数据是连续存储的,内存地址连续,所以在查找数据的时候效率比较高:它的缺点:在存储之前,我们需要申请一块连续的内存空间,并且在编译的时候就必须确定好它的空间的大小.在运行的时候空间的大小是无法随着你的需要进行增加和减少而改变的,当数据两比较大的时候,有可能会出现越界的情况,数据比较小的时候,又有可能会浪费掉内存空间.在改变数据个数时,增加.插入.删除数据效率比较低. 链表:是动态申请内存空间,不需要像数组需要提前申请好内存的大小,链表只需在用的时候申…
一.数组申明   int[] a1 int a2[] C# 支持 不支持 Java 支持 支持 二.数组申明且初始化    int[] a1 = new int[] { 2, 31 } int a1[] = new int[] { 2, 31 }  int[] a11 = new int[2] { 2, 31 } int a22[] = new int[2] { 2, 31 } int[] a = { 3, 9 }   C#       支持 不支持  支持 不支持 支持 Java      支…
NIO是为了弥补IO操作的不足而诞生的,NIO的一些新特性有:非阻塞I/O,选择器,缓冲以及管道.管道(Channel),缓冲(Buffer) ,选择器( Selector)是其主要特征. 概念解释: Channel——管道实际上就像传统IO中的流,到任何目的地(或来自任何地方)的所有数据都必须通过一个 Channel 对象.一个 Buffer 实质上是一个容器对象. Selector——选择器用于监听多个管道的事件,使用传统的阻塞IO时我们可以方便的知道什么时候可以进行读写,而使用非阻塞通道,…
newCachedThreadPool: 底层:返回ThreadPoolExecutor实例,corePoolSize为0:maximumPoolSize为Integer.MAX_VALUE:keepAliveTime为60L:unit为TimeUnit.SECONDS:workQueue为SynchronousQueue(同步队列) 通俗:当有新任务到来,则插入到SynchronousQueue中,由于SynchronousQueue是同步队列,因此会在池中寻找可用线程来执行,若有可以线程则执…
不多说,直接上干货! 首先来说一个非常形象的例子,来说明下数组和链表. 上体育课的时候,老师说:你们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组. 老师说,你们每个人记住自己前面的人和后面的人,然后老师只知道第一人是谁. 然后你们各自由活动,老师要找某一个人,是不是每次都是从第一个开始往自己身后的人开始传达?这就是链表. 老师说: 大家1,2,3,4报数,凡是报1,为1队,凡是报2的为2队.......  这就是散列(哈希).而这个4就相当于预定义好的桶的个数. 程序中,存…
栈是非常重要的数据结构,栈具有后进先出的特点. 在JVM内部,每个线程维护一个栈,对于每个方法调用,入栈一个元素,成为栈帧,当方法执行完成后,对应的栈帧出栈. 栈帧中,也包含一个栈,称为操作数栈. 一.定义栈 public interface Stack<Item> { // 添加一个元素 void push(Item item); // 删除最近添加的元素 Item pop(); // 栈是否为空 boolean isEmpty(); // 栈中的元素数量 int size(); } 二.数…
在程序中,存放指定的数据最常用的数据结构有两种:数组和链表. 数组和链表的区别: 1.数组是将元素在内存中连续存放. 链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起. 2.数组必须事先定义固定的长度,不能适应数据动态地增减的情况.当数据增加时,可能超出原先定义的元素个数:当数据减少时,造成内存浪费. 链表动态地进行存储分配,可以适应数据动态地增减的情况. 3.(静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小. 链表从堆中分配空间, 自由度大但是申请管理比较麻…
一:什么是数组,什么时候使用数组? 数组是用来保存一组数据类型相同的元素的有序集合,数组中的每个数据称为元素.有序集合可以按照顺序或者下标取数组中的元素. 在Java中,数组也是Java对象.数组中的元素可以是任意类型(包括基本类型和引用类),但同一个数组里只能存放类型相同的元素. 二:什么时候用数组? 保存一堆数据类型相同的数据的时候. 数据要求有顺序. 三:数组和链表的区别 在内存开辟难易程度上? 数组内存分配必须是一块连续的内存空间. 链表内存分配不一定是连续的内存空间. 在项目中如何选择…
数组和链表是数据结构中最基本的部分. 数组 在java中,数组定义为一种基本类型,其可以通过下标获取到对应位置的数据.那么这种结构的数据,在内存中是怎么存放的呢? 数组在内存中是一段连续的存储单元,每个数据依次放在每个单元中. 分析这种结构,我们可以得出以下几个结论: 创建一个数组,必须声明其长度,以在内存中寻找合适的一段连续存储单元.这也意味着数组的大小是固定的,我们无法动态调整其大小. 想要获取数组中第i个元素,其时间复杂度是 O(1),因为可以根据其地址直接找到它.同理修改也是. 数组对查…