`
xinglongbing
  • 浏览: 146628 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

对不可修改视图对象的支持

阅读更多

AbstractCollection:

public abstract class AbstractCollection<E>
extends Object
implements Collection<E>

此类提供了 Collection 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。

要实现一个不可修改的 collection,程序员只需扩展此类,并提供 iteratorsize 方法的实现。(iterator 方法返回的迭代器必须实现 hasNextnext。)要实现可修改的 collection,程序员还必须另外重写此类的 add 方法(否则,会抛出 UnsupportedOperationException),并且 iterator 方法返回的迭代器必须另外实现其 remove 方法。按照 Collection 接口规范中的推荐,程序员通常应该提供一个 void (无参数)和 Collection 构造方法。此类中每个非抽象方法的文档详细描述了其实现。如果要实现的 collection 允许更有效的实现,则可以重写这些方法中的每个方法。

    public boolean add(E e) {

throw new UnsupportedOperationException();

    }

 

   public boolean remove(Object o) {

Iterator<E> e = iterator();

if (o==null) {

   while (e.hasNext()) {

if (e.next()==null) {

   e.remove();

   return true;

}

   }

} else {

   while (e.hasNext()) {

if (o.equals(e.next())) {

   e.remove();

   return true;

}

   }

}

return false;

    }

 

 

AbstractList

public abstract class AbstractList<E>extends AbstractCollection<E>implements List<E>

此类提供 List 接口的骨干实现,从而最大限度地减少了实现由“随机访问”数据存储(如数组)支持的接口所需的工作。对于连续的访问数据(如链表),应优先使用 AbstractSequentialList,而非此类。要实现不可修改的列表,程序员只需扩展此类,并提供 get(int index)size() 方法的实现。要实现可修改的列表,程序员还必须另外重写 set(int index, Object element) 方法,否则将抛出 UnsupportedOperationException。如果列表为可变大小,则程序员必须另外重写 add(int index, Object element)remove(int index) 方法。按照 Collection 接口规范中的推荐,程序员通常应该提供一个 void (无参数)和 collection 构造方法。与其他抽象 collection 实现不同,程序员不必 提供迭代器实现;迭代器和列表迭代器由此类在以下“随机访问”方法之上实现:get(int index)set(int index, Object element)set(int index, Object element)add(int index, Object element)remove(int index)。此类中每个非抽象方法的文档详细描述了其实现。如果要实现的 collection 允许更有效的实现,则可以重写这些方法中的每个方法。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics