- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在中容器主要包括数组集合和映射三种数组将数字与元素联系起来其中的元素都具有相同的数据类型只能通过下标来访问其元素数组可以是一维的也可以是多维的数组一旦生成其容量就不能改变数组是一种复合数据类型在中除了可以像来声明和表示一个数组还可以用类来表示一个数组同样地类库还提供了类类操作数组该类定义了对数组进行操作的各种方法赋值排序搜索比较查找元素等集合是一个接口类包括等子接口其具体的实现类可以用来保存多个元素这里只讨论常用的子接口和的常用实现类常用的实现类有和等常用的实现类有和等需要注意的是和有着很大的不
在Java中,容器主要包括:数组(Array)、集合(Collection)和映射(Map)三种。 (1)数组Array:将数字与元素联系起来,其中的元素都具有相同的数据类型,只能通过下标来访问其元素;数组可以是一维的,也可以是多维的;数组一 旦生成,其容量就不能改变。数组是一种复合数据类型,在Java中,除了可以像“int[] array;”来声明和表示一个数组,还可以用Array类来表示一个数组,同样地,JDK类库还提供了Arrays类类操作数组,该类定义了对数组进行 操作的各种方法(赋值、排序、搜索、比较、查找元素等)。 (2)集合Collection:是一个接口类,包括List、Set、 Queue等子接口,其具体的实现类可以用来保存多个元素。这里只讨论常用的子接口List和Set的常用实现类。常用的List实现类有 ArrayList、Vector和LinkedList等,常用的Set实现类有HashSet、LinkedHashSet和TreeSet等。需要 注意的是,List和Set有着很大的不同,主要包括是否允许元素重复和是否维护元素的次序。 (3)映射Map:保存相关联的键值 对。其具体的实现类可以将键映射到值,根据键得到值,因此,一个映射不能包含重复的键,但是允许有重复的值,每个键最多只能映射到一个值。 常见的Map实现类有HashMap、Hashtable、LinkedHashMap和TreeMap等。 为了讨论的方便,下面以Array,List、Set、Map为分类来讨论这几种容器的使用特点。 (1)Array:数组的使用很直接,主要是根据下表来获取其元素。其特点就是一旦生成,其容量不能改变,并且每个元素之间不允许有“空隙”。其使用实 例可以参考电子工业出版社“宝典”系列之《Java JDK 实例宝典》(夏先波 编著),个人感觉这本书写得不错,给出了许多JDK类库的具体使用实例,代码的注释也比较详细,很适合初学者入门学习使用,如果看Java Doc 还是有不明白的地方,也可以参考此书:) (2)List:可用来存放多个元素,能够自动扩充容量,能够维护元素的次序,并且允许元素重复。 (2.1)ArrayList类:最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速的随机访问,但是要从ArrayList的中间 位置插入或者删除 元素时,需要对数组进行复制、移动,代价比较高,因此,ArrayList适合随机查找和遍历,不适合插入和删除。 (2.2)Vector类:同ArrayList一样,其内部也是通过数组实现的,不同的是,Vector支持线程的同步,能够避免多线程同时写而引起的不一致,但是实现线程的同步需要很高的代价,因此访问Vector比ArrayList慢。 (2.3)LinkedList类:见其名,该类与链表肯定有关系:)该类的内部是通过链表来实现的,很适合数据的动态插入和删除,但是随即访问和遍历 的速度比较慢。此外,该类还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。 (3)Set:可用来存放多个元素,但是不允许元素重复(即不保存重复元素),也不能够维护元素的次序。很直观,联想一下数学中的集合的概念就很好理解了。此外,需要注意的是,加入Set的元素必须定义equals()方法以确保对象的唯一性,如String对象。 (3.1) HashSet类:采用散列函数对元素进行排序,是专门为快速查询而设计的存入HashSet的对象必须定义hashCode()方法。 (3.2)TreeSet类:采用红黑树的数据结构进行排序元素,使用它可以从Set中提取有序的序列。 (3.3) LinkedHashSet类:内部使用散列以加快查询速度,同时使用链表维护元素的插入次序,在使用迭代器遍历时,会按插入次序显示结果。 (4)Map:可以用来存放相关联的键值对,根据键得到值。常见的Map实现类有HashMap、Hashtable、LinkedHashMap和TreeMap.
??? (4.1)HashMap类:一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,但不支持线程同步。HashMap最多允许一条记录的键为null,但是允许多条记录的值为null.
??? (4.2)Hashtable类:与HashMap类似,但是它不允许记录的键或者值为null,支持线程同步,因而Hashtable在写入数据时会很慢。 (4.3)LinkedHashMap类:保存了记录的插入顺序,在用It
文档评论(0)