工作随笔

测试题

ArrayList:

ArrayList是一种线性数据结构,它的底层是用数组实现的,相当于动态数组。与Java中的数组相比,它的容量能动态增长。类似于C语言中的动态申请内存,动态增长内存。 
当创建一个数组的时候,就必须确定它的大小,系统会在内存中开辟一块连续的空间,用来保存数组,因此数组容量固定且无法动态改变。ArrayList在保留数组可以快速查找的优势的基础上,弥补了数组在创建后,要往数组添加元素的弊端。实现的基本方法如下

1. 快速查找:在物理内存上采用顺序存储结构,因此可根据索引快速的查找元素。 
2. 容量动态增长

ArrayList与Collection关系如下图,实线代表继承,虚线代表实现接口:

元素存储 
ArrayList是基于数组实现的,当添加元素的时候,如果数组大,则在将某个位置的值设置为指定元素即可,如果数组容量不够了,以add(E e)为例,可以看到add(E e)中先调用了ensureCapacity(size+1)方法,之后将元素的索引赋给elementData[size],而后size自增。例如初次添加时,size为0,add将elementData[0]赋值为e,然后size设置为1(类似执行以下两条语句elementData[0]=e;size=1)。http://blog.csdn.net/jianyuerensheng/article/details/51192811

LinkedList

LinkedList与ArrayList一样,实现List接口,LinkedList是基于链表实现的,插入和删除操作比ArrayList更加有效,但随机访问的效率比ArrayList差。

LinedList数据结构原理:底层的数据结构是基于双向循环链表的,且头结点中不存放数据

既然是双向链表,那么必定存在一种数据结构——我们可以称之为节点,节点实例保存业务数据,前一个节点的位置信息和后一个节点位置信息

stack:栈

Queue:队列

Tree:树

Heap:堆

时间: 2024-12-19 14:11:07

工作随笔的相关文章

工作随笔——pre-commit钩子限制日志长度和提交的文件类型

近期检查SVN时发现备份好的文件体积异常庞大.才跑2个月备份出来的大小就有4G多.仔细查询发现很多很多IDE自动生成的二进制文件...我类个去.好吧,开发不自觉就只有强制限制了. google的时候发现这篇文章:http://blog.csdn.net/clever101/article/details/8560833 自己动手丰衣足食.脚本如下: #!/bin/bash export LANG="zh_CN.UTF-8" #确保中文日志显示正常,便于统计日志 REPOS="

工作随笔——Java调用Groovy类的方法、传递参数和获取返回值

接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码如下: # TestGroovy.groovy 定义testC方法,传入3个参数,返回处理后的数据 def testC(int numA, int numB, int numC) { "传入参数:" + numA + numB + numC + "计算之和为:" + (

海康威视网络监控摄像头常见设置-工作随笔

昨天Boss就和我说,有个客户要装一个网络监控,问我会不会,是海康威视的,要实现手机远程观看和电脑本地存储,我说会,之前都有做过,让我有空时在店里测试一下,这个不急!于是我把摄像机连上网络,在海康威视官网下载IVMS-4200软件,海康威视摄像机的默认IP是192.0.0.64,用户名admin,密码12345,把摄像机的IP修改和路由器同一网段,如路由器是192.168.1.1,摄像头修改为192.168.1.XXX,修改和添加设备时都有输入密码,有的还要输入用户名,密码输入正确才能修改和添加

工作随笔——spring异步处理@Async使用笔记

@Async使用笔记 必须是public方法 必须是非static方法 方法调用的实例必须由spring创建和管理 代码示例如下: // 创建Foo类@Component class Foo { @Async public static void bar(){ /* ... */ } @Async public void bar2(){ /* ... */ } } // 调用示例代码class Test { @Autowired //@Lazy(true)可以解决spring循环引用的问题 Fo

工作随笔——Swift中的Range和一些字符操作

截取字符串在Swift中相比OC要复杂很多,主要原因可能还是OC的NSRange的创建方法中参数类型为int,而Swift却对类型要求很严格,int不能作为参数创建Range,这要使用String中的startIndex和endIndex,但问题又出来了,如果要有灵活的范围呢?在之前可以直接就用advance函数,现在的Swift没有这个函数了,要用到advancedBy和distanceTo. 以下代码是对于Range和advancedBy函数的使用: //截取子串 let str = "He

工作随笔——mysql子查询删除原表数据

最近在开发的时候遇到一个mysql的子查询删除原表数据的问题.在网上也看了很多方法,基本也是然并卵(不是写的太乱就是效率太慢). 公司DBA给了一个很好的解决方案,让人耳目一新. DELETE fb.* FROM froadbill.bill fb LEFT JOIN froadbill.refundinfo br ON br.billSeqNo = fb.seq_no WHERE br.billSeqNo IS NULL AND fb.create_time >='20150102000000

工作随笔——Intellij_idea-14官方快捷键中文版

听说Intellij Idea好几年了.因为快捷键的原因,所以一直没有放弃eclipse.上周末抽了点时间,用google翻译+自己实践翻译了一下官方的快捷键. 基本做完的时候在百度文库上突然搜索到一篇比较全的Intellij Idea 13.1的快捷键.好吧,下载下来,整合整合,顺便加上自己理解. word版本:点我去下载 编辑类: Ctrl+Space 基本代码实例(类.方法.变量) Ctrl + Shift + Space 智能代码实例(根据需要的类型过滤方法和变量) Ctrl + Shi

工作随笔-mysql

1:如何找回mysql的数据 用repair table能够找回绝大多数的数据,但还是有部分有错误的记录(这些记录都是在copy数据文件的时候正在读写的记录)在修复时被直接删除了.所以,我认识到我们这种备份的方式存在隐患. 查阅了mysql的文档,看到文档中记录了两种安全备份的方法: 1. mysqlhotcopy 这个命令会把数据库里的表都锁住,然后再拷贝文件,保证数据的完整性.命令的使用方法是: mysqlhotcopy -u root -p<rootpass> db1 db2 ... d

工作随笔-2018.04.23

1.今天师傅给了我一个任务:让我做一个关于项目的采购清单,以及已采购项目的付款情况,本人是这样做的. [做法]:本人将这个采购清单的大表格将不需要的部分隐藏,打印出来需要的部分,然后算出来合同金额.已经付款的金额.未付的金额    这是很小的一件事,但是我觉得我做的还                   可 以. 2.下午的时候,张总让我取两瓶"寇兰山红酒",我的做法是这样的. [错误做法]:问了问行政,说没有寇兰山的红酒了,我就去告诉张总,说是红酒没有了,张总说,红酒还有,行政经理说