SOS!!!!!!!!!!!!

解决方案 »

  1.   

    一、ArrayList按照我的理解它应该是一个单链表,具有头元素,能动态的分配内存,不知我的想法对不对,请给与明确的答案!!!还有,它有没有尾元素??如果既有头元素和尾元素,那么它又是怎么能动态的分配内存的?按照我的想法头尾都确定了长度也应该确定了才对呀!!ArrayList不是链表,就是一个数组,当大小不够时就生成一个新得数组。
    可以参到:http://blog.csdn.net/treeroot/archive/2004/09/16/107041.aspx二、哪位高人能介绍一下Iterator的特点!!!
    谢谢了,各位!
    方便,可以不用考虑内部实现。
      

  2.   

    ArrayList 是用 Array 来实现的 List,默认会分配一个大小的数组,当存储满的时候,会分配一个新的更大的数组,将原来的内容拷贝过去,再继续存。如果你需要用链接实现的List,可以用LinkedList。Iterator 的特点就是你只能用它来进行遍历,而且用 Iterator 来遍历会限制你对原数据的操作,因为你只可以顺序的取值出来,不可以存入或者其它修改原数据的操作,(但是 Iterator 提供了 remove 方法,虽然没怎么用,但是还是觉得这个方法有背于 iterator 的本意)。具体可以参考一下设计模式的 Iterator 模式
    它的另外一个作用是提供了一种数据接口,Collection 的东西好像都可以取 Iterator 的吧,那么,以后你需要取值的时候只需要要求一个 Iterator 即可,完全不必去管这个 Iterator 中的数据是来自 List 或者 Set 或者 Map 或者其它。
      

  3.   

    map不能实现iterator接口,因为map不是由collection继承下来的!其他由collection继承下来的类都可以使用iterator接口!不过treeMap好象也能支持iterator
      

  4.   

    map 是分 key 和 value 的两个集合,分别由 keySet 和 values 来取得。
    这两个都可以取 iterator 的treemap 也一样,它不应该有 iterator,只可能分 keySet().iterator()和 values().iterator()
      

  5.   

    ArrayList 动态变大变小
    iterator 允许双向遍历 (hasNxt()向下 hasPrevious()向上)
      

  6.   

    iterator 允许双向遍历 (hasNxt()向下 hasPrevious()向上)
    -----------------------------iterator只允许单向遍历
    ListIterator才是双向遍历
      

  7.   

    关于Collections Framework,《Core Java 2 Volume2》里有详细介绍