WEB开发网
开发学院软件开发Java 集合类库(一):集合类库的基本框架 阅读

集合类库(一):集合类库的基本框架

 2009-09-18 00:00:00 来源:WEB开发网   
核心提示: 值得一提的是:LinkedList实现List接口的add(E o)操作完全覆盖了它老爹的add(E o)方法,而且只是遵循了AbstractList的插入要求(在末尾插入),集合类库(一):集合类库的基本框架(4),但用了一种新的适合高效链表的实现策略,也就是说我们直接调用 LinkedLis

值得一提的是:LinkedList实现List接口的add(E o)操作完全覆盖了它老爹的add(E o)方法。而且只是遵循了AbstractList的插入要求(在末尾插入),但用了一种新的适合高效链表的实现策略。也就是说我们直接调用 LinkedList.add(E o)将会采用这种新策略实现。

但是,如果LinkedList中没有add(E o)方法又会怎么样?好的,一点都不会有问题,因为LinkedList实现了随机位置插入方法add(int index, E element)。你还记得 AbstractList类中add(E o)的实现途径不? 没错,就是用到了这个随机add(size(), o)。也就是说,我们即使在LinkedList中不写add(E o)方法,只要实现了 add(int index, E element)方法,依然能通过父类所定义了实现策略完成末尾添加功能的。

这下,我们理解了这种抽象类,具体类分离实现的好处了吧。

ArrayList (标准具体类)  

此类提供一个大小可变数组的操作。

Java代码   

public boolean add(E o) { 
 ensureCapacity(size + 1); // 动态增加容量 
 elementData[size++] = o; 
 return true; 
} 
public void ensureCapacity(int minCapacity) { 
 ….// 
 } 
} 
public void add(int index, E element) { 
 if (index > size || index < 0) 
   throw new IndexOutOfBoundsException( 
 "Index: "+index+", Size: "+size); 
 
 ensureCapacity(size+1); // Increments modCount!! 
 System.arraycopy(elementData, index, elementData, index + 1, 
  size - index); 
 elementData[index] = element; 
 size++; 
} 

ArrayList的add(E o)又是一种完全不同的实现途径,但是实现结果都是一样的:在末尾添加。

(6)  总结

JDK5.0集合框架的总体设计就是做到:接口,抽象类,具体类的分离。

接口:  定义了集合必须实现的所有方法,但并没有具体实现。

抽象类:  提供接口中大部分方法的基本实现,可以说是提供了实现的案例。

具体类:  继承抽象类,并提供接口中特殊方法的实现。 具体类可以使用抽象类的基本方法,也可以自己定义高效的实现方法。但必须实现抽象类中没有实现的,但接口中定义了的方法。

上一页  1 2 3 4 

Tags:集合 集合 基本

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接