Java中的容器
线性表,链表,集合,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
主要分为两个分支:
Collection和Map,其中Map中存储的对象是以名值对的方式储存的,如:<name,value>
是字典的实现。
由Collection接口派生的两个接口是List和Set。
其中,List的特点是:有顺序而可以重复。Set的特点是:无顺序而不可重复。
什么是重复?
不是说容器中有两个格子装了同一个对象,重复是指:a.equals(b) == true; 所以,当我们自定义对象作为容器的储存元素时,我们必须重写java.lang.Object的equals方法,Object的默认equals只有当比较的参数是本身时才返回true,明显不是我们想要的,所以必须重写,而且,如果重写equals就必须重写hashCode()方法,因为,当我们的对象作为字典Map的键key时,我们的定位是同过hashCode方法,这样来提高效率。注:两个对象equals若为TRUE,hashCode一定返回同样的int;但是,如果Equals返回FALSE,hashCode不一定不同。
有关他们的重写,不是很容易的,会后面详细探讨。
List接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下面要提到的Set不同,List允许有相同的元素。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素, 还能向前或向后遍历。
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
LinkedList类
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
List list = Collections.synchronizedList(new LinkedList(.
相关文档:
在Java中,当一个对象被创建时,成员变量的初始化及构造方法的调用遵循以下顺序:
1. 将分配给对象的存储空间初始化成二进制的零。
2. 调用所有基类的构造方法。这个步骤会不断地反复递归下去,首先是构造这种层次结构的根,然后是下一层子类,等等,直到最底层的子类。
3. 按照声明的顺序调用成员的初始化方法。
4. 调 ......
1.最简单的图形,一个消息框
import javax.swing.JOptionPane;
//表明程序使用javax.swing包的JOptionPane类
public class Dialog1{
public static void main(String[] args) {
// TODO Auto-generated method stub
&n ......
8种基本数据类型有相应的8种包装类(Wrapper)对应,分别是:Character,Byte,Short,Integer,Long,Float,Double,Boolean.
特点:
1.提供了valueOf(String)用于从字符串转换及toString()转换成字符串
2.通过xxxxValue()方法可以得到所包装的值,如Integer对象的intValue()方法.
示例代码:
public class DoubleAndString {
pu ......
内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题。内存溢出与锁表则不然,一般现象是操作一般时间后系统越来越慢,直到死机,但并不能明确是在什么操作上出现的,发生的时间点也没有 ......
异常列表:
1. java.lang.nullpointerexception
2. Java.lang.classnotfoundexception
3. Java.lang.arithmeticexception
4. Java.lang.arrayindexoutofboundsexception
5. Java.lang.illegalargumentexception
6. java.lang.illegalaccessexception
1. java.lang.nullpoi ......