--说说ArrayList,Vector,LinkedList的存储性能和特性。

--ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,他们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法,线程安全的,通常性能上较ArrayList差。

而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后相即可,所以插入的速度较快。

LinkedList也是线程不安全的,LinkedList提供一些方法,使得LinkedList可以被当做堆栈和队列来使用。

--List和Map的区别。

--一个是存储单列数据的集合,另一个是存储键值对这样的双列的数据的集合,List中存储的数据是有顺序并且允许重复,Map中存储的数据是没有顺序的,其键不能重复,值是可以重复的。

注意:List中的顺序不是指那种按年龄,按大小,按价格之类的排序。

当我们调用add(Object o)方法时,每次加入的对象就像火车站买票有排序顺序一样,按先来后到的顺序。有时候也可以插队,即add(int index,Object o)方法,就可以指定当前对象在集合中的存放位置。一个对象可以被反复存储进List中,每调用一此add方法,这个对象就被插入进集合中依次。

其实,并不是这个对象本身存储进了集合,而是在集合中用了一个索引变量指向这个对象,当这个对象被add多次,即相当于集合中有多个索引指向了这个对象,List除了可以以iterator接口取得所有的元素,还可以调用get(index i)来明确说明取第几个。

补充:List和Set具有相似性,他们都是单列元素的集合,所以他们有一个公共的父接口,Collection。List以特定次序来持有元素,可以有重复元素。Set无法拥有重复元素,内部排序。Map保存key-value值,value可以多值。

--Collection和Collections的区别。

--Collection是集合类的上级接口,继承他的接口主要有Set和List。

Collections是针对集合类的一个帮助类,他提供了一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

--什么是java序列化?符合实现java序列化?或者请解释Serializable接口的作用。

--我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复java对象。

例如,要将java对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写一段代码去把一个java对象变成某个格式的字节流再传输,但是jre本身就提供了这种支持,我们可以调用OutputStream的writeObject方法来做,如果要让java帮我们做,需要被传输的java对象实现Serializable接口,这样,javac编译时就会进行特殊处理,编译的类才可以被writeObject方法操作,这就是所谓的序列化。

该接口没有需要实现的方法,只是为了标注该对象是可被序列化的。

例如:在web开发中,如果对象被保存在了Session中,tomcat在重启时要把Session对象序列化到硬盘,这个对象就必须实现了Serializable接口。

--heap和stack有什么区别?

--java的内存分为两类,一类是栈内存,一类是堆内存。

  栈内存是指程序进入一个方法时,会为这个方法单独分配一块存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。

  堆是与栈作用不同的内存,一般用于存放不在当前方法栈中的那些数据,例如,new创建的对象都放在堆里,所以,他不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中而不是栈里。

Java宝典(三)的更多相关文章

  1. Java EE : 三、图解Session(会话)

    目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.Session由来 二.Sessio ...

  2. JAVA第三周作业(从键盘输入若干数求和)

    JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...

  3. 编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三

    编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三 编程语言性能游戏排行榜,C/C++第一ATS第二JAVA第三

  4. Java的三种代理模式

    Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...

  5. Java的三种代理模式简述

    本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ...

  6. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

  7. Java进阶(三十八)快速排序

    Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...

  8. Java进阶(三十七)java 自动装箱与拆箱

    Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...

  9. Java进阶(三十六)深入理解Java的接口和抽象类

    Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

  10. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

随机推荐

  1. chapter 2: Representing and manipulating information

    C allows conversion between unsigned and signed. The rule is that the underlying bit representation ...

  2. c语言结构体3之结构体嵌套

    注意: 1结构体内部再次定义一个结构体 但是没有创建结构体的实例  也就是说再次定义的结构体内部的变量会被当做母结构体的成员变量 struct tianchao { int data; ]; stru ...

  3. pyqt搜索指定信息 github处找到,谢谢这位朋友的帮助了

    def tabunqi(self,text):    #第一遍添加之后,不提示,当第二次添加相同的数据时,就提示下    text1=str(text)    items = self.downwid ...

  4. Oracle用户解锁的三种办法及默认的用户与密码

    ORA-28000: the account is locked-的解决办法 2009-11-11 18:51 ORA-28000: the account is locked 第1步:使用PL/SQ ...

  5. mysqldump备份原理

    现网中数据库运维时,要经常对数据库做热备.为保证恢复时数据的完整性与一致性, 一种方法是在备份之前锁表,但锁表会影响正在运行的业务. mysqldump是当前MySQL中最常用的备份工具,通过mysq ...

  6. CodeSmith使用总结--下拉列表和文件夹对话框属性

    上一篇有点短了,因为实在没有什么可说的,这一篇会多一点.O(∩_∩)O~ 一.下拉列表 关于如何在CodeSmith中创建一个下拉列表的属性框其实很简单,是要使用C#中的枚举就行了,看操作. 首先定义 ...

  7. 再说重写IHttpHandler,实现前后端分离

    aspx页面第一次加载时,HttpHandler 里面是如何编译指定页面的呢?Framework提供了编译页面的API如下: BuildManager.CreateInstanceFromVirtua ...

  8. Wireshark 使用教程

    原文出处   http://blog.sina.com.cn/s/blog_5d527ff00100dwph.html Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数 ...

  9. hdu 素数环

    算法:搜索 题意:相邻的两个数之和是素数,别忘了最后一个,和第一个 Problem Description A ring is compose of n circles as shown in dia ...

  10. NDK编译Python2.7.5

    [背景] 网上有一些ndk编译python的做法,但按照教程做总是不成功,可能是环境版本不一样,导致很多地方的配置都不成功. 网上的教程大多只有做法,没有解释,即使按照教程编译成功,很多细节都不知道为 ...