日期:2014-05-20  浏览次数:20873 次

JAVA集合问题
JAVA刚学到集合部分,不知道JAVA的实现接口的几个类,都应该用在什么地方,API也看了,但是还是不怎么清楚所用的具体位置,还请高手们多多指点谢谢了.
下面的题我做了一下,不知道用的对不对啊.
1、如果需要维护和搜索一个部件列表,它们由其唯一的字母数字组合序列号表示,其中的部件是Part类型,这时使用哪种集合比较好?
    LinkedHashSet

2、如果1题中改为按照部件的序列号取部件,用哪种集合比较好?
    Vector    

3、如果1题中改为要求记录最后访问哪个部件,用哪种集合比较好?
    LinkedHashMap


------解决方案--------------------
Collection确实不好翻译,容易和Set混淆,所以不如用容器类根容易理解。不过如果你学了J2EE,可不要和其中的“容器”搞混了。Java容器类主要是三个接口,Set、List和Map,代表三种数据结构。Set接口模仿数学中的集合gainian,可以容纳不重复、没有顺序的元素,而List则是线性表,最后是Map,类似平行二元数组(parallel array),建立属性-值对,Map还有一个类似的对应Dictionary,概念是一样的。学习Java容器类,手要掌握这三种数据类型的概念,看API文档时,仔细研读关于这三个接口的说明,以及相应的接口方法定义、说明。剩下的,就是实现这三个接口的类,这些类的数量很多,一下也不容易全搞明白,可以先按照上述的三个接口各选一个有代表性的,比如List,可选ArrayList或Vector,Set可选HashSet,Map接口可选HashMap,体会这三种数据结构的不同。一旦能够掌握在什么情况下用什么数据结构,比如家里一个邮件列表,如果需要存储的邮件地址不能重复,则可以用Set型,如允许重复可选用List,如果想建立用户名和邮件地址的对应关系,则可以用Map类。接下来可以在研究这三种类型的其它类,如List中LinkedList,Set中的LinkedHashSet,Map中的LinkedHashMap等。有一定心得后,再研究Iterator以及泛型编程的概念,捎带把Conllections和Arrays这两个非常有用的工具类学习一下,坐后归纳汇总,研究一下整个容器类的继承架构,包括Conllection接口以及有Abstract前缀的抽象类,基本上可以满足日常需要了。要了解一些同类接口各个类的细微区别,有时需要其它方面的Java知识,比如ArrayList和Vector,需要有线程方面的知识,知道什么是线程安全。这就不在本话题内了。