首先这个[]也就数组我相信写过程序的就知道。
然后说说Java的集合框架,最底层的是个Collection接口,然后其上有List,Set,Map这3中集合。
List有ArrayList以及LinkedList,其中ArrayList可以看作一个动态扩展的数组。而LinkedList其实就是一个链表。所以一般来说ArrayList不适合进行大量的插入以及删除操作LinkedList就比较适合,但是ArrayList的get操作和append操作一般来说效率要比LinkedList高。其实LinkedList虽然可以进行get(i)的操作,但是最好不要用。
Set有TreeSet以及HashSet这两种,Set和List的区别其实就在于没有随机访问的操作,也就是没有get(i)的操作,而且再Set中同样的指只能出现一次。TreeSet其实是个红黑树的实现,也就是个平衡的2叉树,如果我记得没错效率应该是nlog(n).而HashSet其实是个Hash表的实现,也有中文翻译成散列的。效率应该是常数时间的。TreeSet是个排序了的树,所以可以用来处理一些排序的操作。如果对效率有特别要求可以使用HashSet。
Map中同样也有TreeMap以及HashMap,其实Map和Set的区别也就是Map是个键,值对。
至于Vector以及HashTable其实是Java比较老的实现,都是Thread Safe的,Vector可以等同ArrayList而HashTable可以等同于HashMap。

解决方案 »

  1.   

    你不妨看看TIJ2的charper 9.里面这节讲的很细,也很容易理解。
    这些都是容器的概念:
    简单如下:
    Utilities 分为: Collection and Map
    Collection 分化为 List,Set.  
    List --->ArryList,LinkedList,Vector,Stack
    Set ---->HastSet,TreeSet. 
    Map 分化为;HashMap,TreeMap,HashTable.其中 Vector,Stack,HashTable 是java 1.0/1.1的东东,在java2中基本上很少使用了。具体区别可楼上兄弟的,在就是看TIJ 2ed. charpter 9.  方便的话可以下个电子版的。
      

  2.   

    To:  Linyv(vv) 最底层的是个Collection接口,然后其上有List,Set,Map这3中集合。
    这一句的理解是错误的。Collection 和Map 是没什么关系的。不存在谁继承或者谁实现了谁。
      

  3.   

    Linyv(vv) :
    谢谢,谢谢,谢谢哥们
    你对这些集合的分类讲的我明白一些了,能不能再讲一讲他们在内存分配上的不同优缺点(或者是什么集合只能保存同种类对象等等),还有可不可以举一些具体什么情况下使用什么集合的例子,俺的基础比较差,对树啊,链表的理解只有那么一点点.
    谢谢.
      

  4.   

    嗬嗬,估计不是几句话能说清楚了!建议看书,Thinking in java中关于Collection写的很好,可以很有所获得。
      

  5.   

    Shrewdcat(丧邦&灵猫&潇):
    谢谢
    不过真的很失败,我看过了,感觉一片茫然,干吗提供那么多集合,害的我都不知道该用哪个!
    过两天再看一遍!
      

  6.   

    不好意思,确实是笔误。多谢Shrewdcat指出,Map接口和Collection接口却是没有什么关系。
      

  7.   

    其实对于这些集合如何选用无非就是一个效率以及空间使用的权衡。如果smallstrong兄没有学过数据结构解释起来确实比较麻烦。smallstrong兄还是抽个时间看看数据结构吧,看完了也就都明白了。花的时间绝对是值得的。
      

  8.   

    Linyv(vv)兄弟已经讲的够明白了哦!
      

  9.   

    谢谢Linyv(vv),Shrewdcat(丧邦&灵猫&潇),和大家
    我现在感觉比较郁闷,so 150分
    唉,在学校时只顾玩了,现在开始发奋!