好程序員Java學(xué)習(xí)路線之集合,最近收到一些朋友的信息,問(wèn)一下管關(guān)于集合的問(wèn)題,今天就簡(jiǎn)單的聊一下。
為相城等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及相城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、相城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
???? 概念: Iterator是一個(gè)接口,它是集合的迭代器,集合可以通過(guò)Iterator去遍歷集合中的元素,常用API接口:
例子:
注意:
(1)Iterator只能單向移動(dòng)。
(2)Iterator.remove()是唯一安全的方式來(lái)在迭代過(guò)程中修改集合;如果在迭代過(guò)程中以任何其它的方式修改了基本集合將會(huì)產(chǎn)生未知的行為。而且每調(diào)用一次next()方 ??法,remove()方法只能被調(diào)用一次,如果違反這個(gè)規(guī)則將拋出一個(gè)異常。
概念: ListIterator的功能更加強(qiáng)大, 它繼承于Iterator接口,只能用于各種List類型的訪問(wèn)??梢酝ㄟ^(guò)調(diào)用listIterator()方法產(chǎn)生一個(gè)指向List開(kāi)始處的ListIterator, 還可以調(diào)用listIterator(n)方法創(chuàng)建一個(gè)一開(kāi)始就指向列表索引為n的元素處的ListIterator,漢化API如下:
由此我們可以推斷出ListIterator可以:
(1)雙向移動(dòng)(向前/向后遍歷).
(2)產(chǎn)生相對(duì)于迭代器在列表中指向的當(dāng)前位置的前一個(gè)和后一個(gè)元素的索引.
(3)可以使用set()方法替換它訪問(wèn)過(guò)的最后一個(gè)元素.
(4)可以使用add()方法在next()方法返回的元素之前或previous()方法返回的元素之后插入一個(gè)元素.
代碼實(shí)例如下:
List<String> list?=?new?ArrayList<>(); ? list.add("老大"); ? list.add("老二"); ? list.add("老三"); ? ListIterator<String> iter?= list.listIterator(); ? //set方法使用 System.out.println("--------------set方法的使用---------------"); while?(iter.hasNext()) { String string?= (String) iter.next(); if(string.equals("老二")) { iter.set("xxx"); } } ? for?(String string?: list) { System.out.println(string); } ? System.out.println("----------------反向遍歷-------------------"); // 將游標(biāo)定位到集合的結(jié)尾 ?????????while?(iter.hasNext()) { ???????? ?iter.next(); ?????????} ?????????// 迭代器遍歷hasPrevious()方法用于反向遍歷的時(shí)候判斷是否還有上一個(gè)元素,并打印出上一個(gè)下標(biāo),如果有才打印,沒(méi)有就是-1 ?????????while?(iter.hasPrevious()) { ????????????System.out.println(iter.previous() + "——>"?+ iter.previousIndex()); ?????????} |
概念: LinkedHashSet繼承自HashSet,HashSet存入的元素是不可重復(fù)的,無(wú)序的。與HashSet相比,LinkedHashSet源碼更少、更簡(jiǎn)單,唯一的區(qū)別是LinkedHashSet內(nèi)部使用的是LinkedHashMap。這樣做的意義或者好處就是LinkedHashSet中的元素順序是可以保證的,也就是說(shuō)遍歷序和插入序是一致的。
?
特點(diǎn): 1、底層是一種鏈接列表和哈希表組成
2、可以保證元素的唯一性,是由哈希表決定的(hashCode()和equals())
3、可以保證元素的迭代順序一致(有序),存儲(chǔ)和取出一致,是由鏈表決定
場(chǎng)合:?什么時(shí)候使用LinkedHashSet集合?
如果在開(kāi)發(fā)中,元素唯一性,并且還要保證元素有序(存儲(chǔ)和取出一致),使用LinkedHashSet集合。
?
代碼:
概念: HashMap是哈希表結(jié)構(gòu),可以保證鍵的唯一性,并不保證有序性,而LinkedHashMap是Map接口的哈希表和鏈表實(shí)現(xiàn),具有可預(yù)知的迭代順序。哈希表保證鍵的唯一性、鏈表保證鍵的有序(進(jìn)出一致)
代碼:
文章題目:好程序員Java學(xué)習(xí)路線之集
本文網(wǎng)址:http://aaarwkj.com/article18/pjchdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、定制網(wǎng)站、企業(yè)建站、面包屑導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)