为什么有些lib定义了自己的集合?

Lai*_*uan 5 java oop collections

例如,在Jsoup中,他们定义了一个类Element来收集Element.

定义包含大量A(s)的A和As类是很常见的.但为什么?为什么我们不使用ArrayList或其他什么?

pla*_*nes 5

ElementsJSoup中的类有许多特定的函数方法,例如

toggleClass(String className) 
html()
Run Code Online (Sandbox Code Playgroud)

哪个在ArrayList上不可用.我想ArrayList可以延长,但作者Elements已经去了作文. ElementsHAS- ArrayList它保持私密的实例. Elements公开List接口的方法,定制方法和其他方法.

但是Elements由ArrayList支持 - 这样作者也可以通过他自己的Class来装饰他选择公开的ArrayList的方法.这是源代码的摘录:

  private List<Element> contents;

    public Elements() {
        contents = new ArrayList<Element>();
    }
Run Code Online (Sandbox Code Playgroud)

顺便说一下:你曾经看过Java 5之前的包装器给Java带来了类型安全性Collections,但是由于Java 5 Generics已经停止了很多这方面的工作.


gab*_*uzo 5

对于这个特殊的例子,查看API会向您显示除了普通的集合方法之外,Elements还提供了与HTML处理相关的内容.因此实现了自定义集合.除了你会注意到Elements工具Iterable,CollectionList.

  • *旁边你会注意到Elements实现了Iterable,Collection和List.*搞笑一个,List本身扩展Collection(扩展Iterable):D (2认同)