新聞中心
java有哪些有序集合?

java中vector和array list的區(qū)別是什么?
給你個(gè)表格吧
類(lèi) 速度 多線程安全性 適用方面
Vector 慢 安全 提供了線程序同 步,在多線程是安全的.
ArrayList 快 不安全 多線程不安全
二者各有特點(diǎn),要看你怎么取舍.
日常編碼的時(shí)候,一般都是單線程程序,采用arraylist較好.
在涉及到網(wǎng)絡(luò)編程.進(jìn)程合作的時(shí)候,多線程共享變量的時(shí)候,采用vector好,舉個(gè)例子,數(shù)據(jù)庫(kù)緩沖池采用vector而不是arraylist.在java中集合中迭代是怎么一回事兒?為什么要進(jìn)行集合的迭代?
迭代可以遍歷并選擇集合中的每個(gè)對(duì)象而不改變集合的結(jié)構(gòu),比如你訪問(wèn)集合的時(shí)候用集合自帶的remove()方法去除集合的元素,這樣會(huì)是使集合的Size()改變,循環(huán)的時(shí)候會(huì)出錯(cuò);而把集合放入迭代器,用迭代器的remove()就不會(huì)出現(xiàn)問(wèn)題
其實(shí)嚴(yán)格來(lái)說(shuō),迭代是一種設(shè)計(jì)模式,迭代的目的是遍歷某一類(lèi)數(shù)據(jù)集合的內(nèi)容,而無(wú)需了解該類(lèi)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
其實(shí)現(xiàn)思路是:定義一個(gè)迭代器接口,該接口至少聲明兩個(gè)方法,分別是:hasNext(),和next()。通過(guò)hasNext()判斷是否還有可遍歷元素,通過(guò)next()返回可遍歷元素。至于具體實(shí)現(xiàn)則根據(jù)不同需求創(chuàng)建不同實(shí)現(xiàn)類(lèi)即可。
也就是說(shuō),迭代本沒(méi)有編程語(yǔ)言屬性,只不過(guò)幾乎所有的編程語(yǔ)言都會(huì)支持迭代罷了。
在Java中遍歷集合可以不用迭代方式,當(dāng)然,不用迭代方式的遍歷僅限于List接口的實(shí)現(xiàn)類(lèi)。因?yàn)長(zhǎng)ist接口規(guī)定可以通過(guò)集合索引來(lái)取得對(duì)應(yīng)的值,不論這個(gè)List用的是數(shù)組還是鏈表實(shí)現(xiàn)。
但是,Java中的集合不僅僅只有List,還有Set。像這種非List集合是無(wú)法通過(guò)索引來(lái)獲取指定元素的,所以這時(shí)候迭代方式就排上了用場(chǎng)。
除了List和Set之外,Java還有一種雙列集合,又稱(chēng)key-value鍵值對(duì)集合。只不過(guò)這種集合遍歷時(shí)無(wú)法直接通過(guò)迭代方式遍歷。而是通過(guò)折中方式,要么先獲得key值集合,通過(guò)遍歷key來(lái)遍歷map,要么是獲得Map.Entry的集合來(lái)遍歷。
總之,迭代方式不屬于任何編程語(yǔ)言,它只是一種設(shè)計(jì)思想,只不過(guò)大多數(shù)編程語(yǔ)言會(huì)去實(shí)現(xiàn)它罷了,包括Java。
文章標(biāo)題:java集合有哪些分類(lèi)
文章起源:http://m.5511xx.com/article/cocdhec.html


咨詢(xún)
建站咨詢(xún)
