17.2.2 Map生成器 我們可以對(duì)Map使用相同的方式,但是這需要有一個(gè)Pair類,因?yàn)闉榱私M裝Map,每次調(diào)用Generator的next()方法都必須產(chǎn)生一個(gè)對(duì)象對(duì)(一個(gè)鍵和一個(gè)值):
key和value域都是public和final的,這是為了使Pair成為只讀的數(shù)據(jù)傳輸對(duì)象(或信使)。 Map適配器現(xiàn)在可以使用各種不同的Generator、Iterator和常量值的組合來(lái)填充Map初始化對(duì)象:
這給了你一個(gè)機(jī)會(huì),去選擇使用單一的Generator<Pair<K,V>>、兩個(gè)分離的Generator、一個(gè)Generator和一個(gè)常量值、一個(gè)Iterable(包括任何Collection)和一個(gè)Generator,還是一個(gè)Iterable和一個(gè)單一值。泛型便利方法可以減少在創(chuàng)建MapData類時(shí)所必需的類型檢查數(shù)量。
下面是一個(gè)使用MapData的示例。LettersGenerator通過(guò)產(chǎn)生一個(gè)Iterator還實(shí)現(xiàn)了Iterable,通過(guò)這種方式,它可以被用來(lái)測(cè)試MapData.map()方法,而這些方法都需要用到Iterable:
這個(gè)示例也使用了第16章中的生成器。 可以使用工具來(lái)創(chuàng)建任何用于Map或Collection的生成數(shù)據(jù)集,然后通過(guò)構(gòu)造器或Map.putAll()和Collection.addAll()方法來(lái)初始化Map和Collection。
|