/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 0 7 ĠThe ĠGu ava ĠAuthors Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . google . common . collect Ċ Ċ import Ġcom . google . common . base . Preconditions . check Argument Ċ import Ġcom . google . common . base . Preconditions . checkNotNull Ċ import Ġcom . google . common . collect . Collect Preconditions . check Non negative Ċ Ċ import Ġcom . google . common . annotations . Beta Ċ import Ġcom . google . common . annotations . G wt Compatible Ċ import Ġcom . google . common . annotations . G wt In compatible Ċ import Ġcom . google . common . base . Predicate Ċ import Ġcom . google . common . base . Pred icates Ċ import Ġcom . google . common . collect . Collections 2 . Filtered Collection Ċ import Ġcom . google . common . math . Int Math Ċ Ċ import Ġjava . io . Serializable Ċ import Ġjava . util . Arrays Ċ import Ġjava . util . Bit Set Ċ import Ġjava . util . Collections Ċ import Ġjava . util . Comparator Ċ import Ġjava . util . Enum Set Ċ import Ġjava . util . HashSet Ċ import Ġjava . util . Linked HashSet Ċ import Ġjava . util . Navig able Set Ċ import Ġjava . util . NoSuch ElementException Ċ import Ġjava . util . Sorted Set Ċ import Ġjava . util . Tree Set Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ import Ġjava . util . concurrent . Copy On Write Array Set Ċ import Ġjava . util . function . Consumer Ċ import Ġjava . util . stream . Collector Ċ import Ġjava . util . stream . Stream ĊĊ Ċ /** Ċ Ġ* ĠStatic Ġutility Ġmethods Ġpert aining Ġto Ġ[ Set ] Ġinstances . ĠAlso Ġsee Ġthis Ġclass 's Ġcounter parts Ċ Ġ* Ġ[ Lists ], Ġ[ Maps ] Ġand Ġ[ Queues ]. Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠSee Ġthe ĠGu ava ĠUser ĠGuide Ġarticle Ġon Ġ[ Ġ` Sets `]( https :// github . com / google / gu ava / wiki / Collection Utilities Explain ed # sets ). Ċ Ġ* Ċ Ġ* Ġ@ author ĠKevin ĠB our r illion Ċ Ġ* Ġ@ author ĠJ ared ĠLe vy Ċ Ġ* Ġ@ author ĠChris ĠP ov irk Ċ Ġ* Ġ@ since Ġ 2 . 0 Ċ Ġ*/ Ċ @ G wt Compatible ( em ulated Ġ= Ġtrue ) Ċ object ĠSets Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Abstract Set ] Ġsubstitute Ġwithout Ġthe Ġpotentially - quadr atic Ġ` removeAll ` ĊĠĠĠĠ Ġ* Ġimplementation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġabstract Ġclass ĠImproved Abstract Set < E > Ġ: ĠAbstract Mutable Set < E >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove All ( c : ĠCollection < E >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġremove All Impl ( this , Ġc ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġimmutable Ġset Ġinstance Ġcontaining Ġthe Ġgiven Ġenum Ġelements . ĠIntern ally , Ġthe Ġreturned ĊĠĠĠĠ Ġ* Ġset Ġwill Ġbe Ġbacked Ġby Ġan Ġ[ Enum Set ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġiteration Ġorder Ġof Ġthe Ġreturned Ġset Ġfollows Ġthe Ġenum 's Ġiteration Ġorder , Ġnot Ġthe Ġorder Ġin ĊĠĠĠĠ Ġ* Ġwhich Ġthe Ġelements Ġare Ġprovided Ġto Ġthe Ġmethod . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġan Element Ġone Ġof Ġthe Ġelements Ġthe Ġset Ġshould Ġcontain ĊĠĠĠĠ Ġ* Ġ@ param Ġother Elements Ġthe Ġrest Ġof Ġthe Ġelements Ġthe Ġset Ġshould Ġcontain ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġimmutable Ġset Ġcontaining Ġthose Ġelements , Ġminus Ġduplicates ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// Ġhttp :// code . google . com / p / google - web - toolkit / issues / detail ? id = 3 0 2 8 ĊĠĠĠ Ġ@ G wt Compatible ( serial izable Ġ= Ġtrue ) ĊĠĠĠ Ġfun Ġ< E Ġ: ĠEnum < E >> Ġimmutable Enum Set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan Element : ĠE , Ġvar arg Ġother Elements : ĠE ): ĠImmutable Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠImmutable Enum Set . as Immutable ( Enum Set . of ( an Element , Ġ* other Elements )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġimmutable Ġset Ġinstance Ġcontaining Ġthe Ġgiven Ġenum Ġelements . ĠIntern ally , Ġthe Ġreturned ĊĠĠĠĠ Ġ* Ġset Ġwill Ġbe Ġbacked Ġby Ġan Ġ[ Enum Set ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġiteration Ġorder Ġof Ġthe Ġreturned Ġset Ġfollows Ġthe Ġenum 's Ġiteration Ġorder , Ġnot Ġthe Ġorder Ġin ĊĠĠĠĠ Ġ* Ġwhich Ġthe Ġelements Ġappear Ġin Ġthe Ġgiven Ġcollection . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġelements Ġthe Ġelements , Ġall Ġof Ġthe Ġsame Ġ` enum ` Ġtype , Ġthat Ġthe Ġset Ġshould Ġcontain ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġimmutable Ġset Ġcontaining Ġthose Ġelements , Ġminus Ġduplicates ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// Ġhttp :// code . google . com / p / google - web - toolkit / issues / detail ? id = 3 0 2 8 ĊĠĠĠ Ġ@ G wt Compatible ( serial izable Ġ= Ġtrue ) ĊĠĠĠ Ġfun Ġ< E Ġ: ĠEnum < E >> Ġimmutable Enum Set ( elements : ĠIterable < E >): ĠImmutable Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( elements Ġis ĠImmutable Enum Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelements Ġas ĠImmutable Enum Set < E > ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( elements Ġis ĠCollection <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= Ġelements Ġas ĠCollection < E > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( collection . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Set . of () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Enum Set . as Immutable ( Enum Set . copyOf ( collection )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr Ġ= Ġelements . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( itr . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenum Set Ġ= ĠEnum Set . of ( itr . next ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIter ators . addAll ( enum Set , Ġitr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImmutable Enum Set . as Immutable ( enum Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImmutable Set . of () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠAcc umulator < E Ġ: ĠEnum < E >> Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġset : ĠEnum Set < E >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġadd ( e : ĠE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( set Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Ġ= ĠEnum Set . of ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset !!. add ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġcombine ( other : ĠAcc umulator < E >): ĠAcc umulator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . set Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġother ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( other . set Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set !!. addAll ( other . set !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġto Immutable Set (): ĠImmutable Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( set Ġ== Ġnull ) ĠImmutable Set . of () Ġelse ĠImmutable Enum Set . as Immutable ( set !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval ĠTO _ IM MUT ABLE _ ENUM _ SET : ĠCollector < Enum <* >, Ġ*, ĠImmutable Set < out ĠEnum <* >>> Ġ= ĠCollector . of < Enum <* >, ĠAcc umulator <* >, ĠImmutable Set < *> >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSupplier < Accumulator <* >> Ġ{ ĠAcc umulator () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBi Consumer < Accumulator <* >, ĠEnum <* >> Ġ{ Ġobj , Ġe Ġ-> Ġobj . add ( e ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBinary Operator < Accumulator <* >> Ġ{ Ġobj , Ġother Ġ-> Ġobj . combine ( other ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFunction < Accumulator <* >, ĠImmutable Set <* >> Ġ{ Ġit . to Immutable Set () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollector . Character istics . UN ORDER ED ) Ġas ĠCollector < *, Ġ*, Ġ*> ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġ` Collector ` Ġthat Ġacc umul ates Ġthe Ġinput Ġelements Ġinto Ġa Ġnew Ġ` Immutable Set ` ĊĠĠĠĠ Ġ* Ġwith Ġan Ġimplementation Ġspecialized Ġfor Ġenums . ĠUn like Ġ[ Immutable Set . to Immutable Set ], Ġthe ĊĠĠĠĠ Ġ* Ġresulting Ġset Ġwill Ġiterate Ġover Ġelements Ġin Ġtheir Ġenum Ġdefinition Ġorder , Ġnot Ġencounter Ġorder . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 2 1 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Beta ĊĠĠĠ Ġfun Ġ< E Ġ: ĠEnum < E >> Ġto Immutable Enum Set (): ĠCollector < E , Ġ*, ĠImmutable Set < E >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAcc umulator . TO _ IM MUT ABLE _ ENUM _ SET ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġnew , Ġ* mutable * Ġ` Enum Set ` Ġinstance Ġcontaining Ġthe Ġgiven Ġelements Ġin Ġtheir ĊĠĠĠĠ Ġ* Ġnatural Ġorder . ĠThis Ġmethod Ġbehaves Ġid entic ally Ġto Ġ[ Enum Set . copyOf ], Ġbut Ġalso ĊĠĠĠĠ Ġ* Ġaccepts Ġnon - ` Collection ` Ġiter ables Ġand Ġempty Ġiter ables . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E Ġ: ĠEnum < E >> Ġnew Enum Set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterable : ĠIterable < E >, Ġelement Type : ĠClass < E >): ĠEnum Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠEnum Set . none Of ( elementType ) ĊĠĠĠĠĠĠĠ ĠIter ables . addAll ( set , Ġiterable ) ĊĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠHashSet ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable *, Ġinitially Ġempty Ġ` HashSet ` Ġinstance . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġmut ability Ġis Ġnot Ġrequired , Ġuse Ġ[ Immutable Set . of ] Ġinstead . ĠIf Ġ` E ` Ġis Ġan Ġ[ Enum ] Ġtype , Ġuse Ġ[ Enum Set . none Of ] Ġinstead . ĠOtherwise , Ġstrongly Ġconsider ĊĠĠĠĠ Ġ* Ġusing Ġa Ġ` Linked HashSet ` Ġinstead , Ġat Ġthe Ġcost Ġof Ġincreased Ġmemory Ġfoot print , Ġto Ġget ĊĠĠĠĠ Ġ* Ġdeterministic Ġiteration Ġbehavior . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note Ġfor ĠJava Ġ 7 Ġand Ġlater :** Ġthis Ġmethod Ġis Ġnow Ġunnecessary Ġand Ġshould Ġbe Ġtreated Ġas ĊĠĠĠĠ Ġ* Ġdeprecated . ĠInstead , Ġuse Ġthe Ġ` HashSet ` Ġconstructor Ġdirectly , Ġtaking Ġadvantage Ġof Ġthe Ġnew ĊĠĠĠĠ Ġ* Ġ[" di amond " Ġsyntax ]( http :// goo . gl / iz 2 Wi ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew HashSet (): ĠHashSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHashSet () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable * Ġ` HashSet ` Ġinstance Ġinitially Ġcontaining Ġthe Ġgiven Ġelements . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġelements Ġare Ġnon - null Ġand Ġwon 't Ġbe Ġadded Ġor Ġremoved Ġafter Ġthis Ġpoint , Ġuse ĊĠĠĠĠ Ġ* Ġ[ Immutable Set . of ] Ġor Ġ[ Immutable Set . copyOf ] Ġinstead . ĠIf Ġ` E ` Ġis Ġan ĊĠĠĠĠ Ġ* Ġ[ Enum ] Ġtype , Ġuse Ġ[ Enum Set . of ] Ġinstead . ĠOtherwise , Ġstrongly Ġconsider ĊĠĠĠĠ Ġ* Ġusing Ġa Ġ` Linked HashSet ` Ġinstead , Ġat Ġthe Ġcost Ġof Ġincreased Ġmemory Ġfoot print , Ġto Ġget ĊĠĠĠĠ Ġ* Ġdeterministic Ġiteration Ġbehavior . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġjust Ġa Ġsmall Ġconvenience , Ġeither Ġfor Ġ` new HashSet (` [ Ġas List ][ Arrays . asList ]` (... )) `, Ġor Ġfor Ġcreating Ġan Ġempty Ġset Ġthen Ġcalling Ġ[ Collections . addAll ]. ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġnot Ġactually Ġvery Ġuseful Ġand Ġwill Ġlikely Ġbe Ġdeprecated Ġin Ġthe Ġfuture . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew HashSet ( var arg Ġelements : ĠE ): ĠHashSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġnew HashSet With Expected Size < E >( elements . size ) ĊĠĠĠĠĠĠĠ ĠCollections . addAll ( set , Ġ* elements ) ĊĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable * Ġ` HashSet ` Ġinstance Ġcontaining Ġthe Ġgiven Ġelements . ĠA Ġvery Ġthin ĊĠĠĠĠ Ġ* Ġconvenience Ġfor Ġcreating Ġan Ġempty Ġset Ġthen Ġcalling Ġ[ Collection . addAll ] Ġor Ġ[ Ġ][ Iter ables . addAll ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġmut ability Ġis Ġnot Ġrequired Ġand Ġthe Ġelements Ġare Ġnon - null , Ġuse Ġ[ Ġ][ Immutable Set . copyOf ] Ġinstead . Ġ( Or , Ġchange Ġ` elements ` Ġto Ġbe Ġa Ġ[ Ġ] Ġand Ġcall Ġ` elements . toSet ()`. ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġ` E ` Ġis Ġan Ġ[ Enum ] Ġtype , Ġuse Ġ[. new Enum Set ] ĊĠĠĠĠ Ġ* Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note Ġfor ĠJava Ġ 7 Ġand Ġlater :** Ġif Ġ` elements ` Ġis Ġa Ġ[ Collection ], Ġyou Ġdon 't ĊĠĠĠĠ Ġ* Ġneed Ġthis Ġmethod . ĠInstead , Ġuse Ġthe Ġ` HashSet ` Ġconstructor Ġdirectly , Ġtaking Ġadvantage Ġof ĊĠĠĠĠ Ġ* Ġthe Ġnew Ġ[" di amond " Ġsyntax ]( http :// goo . gl / iz 2 Wi ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOverall , Ġthis Ġmethod Ġis Ġnot Ġvery Ġuseful Ġand Ġwill Ġlikely Ġbe Ġdeprecated Ġin Ġthe Ġfuture . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew HashSet ( elements : ĠIterable < E >): ĠHashSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( elements Ġis ĠCollection <* >) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHashSet ( Collections 2 . cast ( elements )) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew HashSet ( elements . iterator ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable * Ġ` HashSet ` Ġinstance Ġcontaining Ġthe Ġgiven Ġelements . ĠA Ġvery Ġthin ĊĠĠĠĠ Ġ* Ġconvenience Ġfor Ġcreating Ġan Ġempty Ġset Ġand Ġthen Ġcalling Ġ[ Iter ators . addAll ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġmut ability Ġis Ġnot Ġrequired Ġand Ġthe Ġelements Ġare Ġnon - null , Ġuse Ġ[ Ġ][ Immutable Set . copyOf ] Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġ` E ` Ġis Ġan Ġ[ Enum ] Ġtype , Ġyou Ġshould Ġcreate Ġan Ġ[ Enum Set ] ĊĠĠĠĠ Ġ* Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOverall , Ġthis Ġmethod Ġis Ġnot Ġvery Ġuseful Ġand Ġwill Ġlikely Ġbe Ġdeprecated Ġin Ġthe Ġfuture . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew HashSet ( elements : ĠIterator < E >): ĠHashSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġnew HashSet < E >() ĊĠĠĠĠĠĠĠ ĠIter ators . addAll ( set , Ġelements ) ĊĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġnew Ġhash Ġset Ġusing Ġthe Ġsmallest Ġinitial Ġtable Ġsize Ġthat Ġcan Ġhold Ġ` expected Size ` ĊĠĠĠĠ Ġ* Ġelements Ġwithout Ġres izing . ĠNote Ġthat Ġthis Ġis Ġnot Ġwhat Ġ[ HashSet . HashSet ] Ġdoes , Ġbut Ġit ĊĠĠĠĠ Ġ* Ġis Ġwhat Ġmost Ġusers Ġwant Ġand Ġexpect Ġit Ġto Ġdo . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġbehavior Ġcan 't Ġbe Ġbroad ly Ġguaranteed , Ġbut Ġhas Ġbeen Ġtested Ġwith ĠOpen JDK Ġ 1 . 7 Ġand Ġ 1 . 8 . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġexpected Size Ġthe Ġnumber Ġof Ġelements Ġyou Ġexpect Ġto Ġadd Ġto Ġthe Ġreturned Ġset ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġempty Ġhash Ġset Ġwith Ġenough Ġcapacity Ġto Ġhold Ġ` expected Size ` Ġelements ĊĠĠĠĠ Ġ* Ġwithout Ġres izing ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` expected Size ` Ġis Ġnegative ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew HashSet With Expected Size ( expected Size : ĠInt ): ĠHashSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHashSet ( Maps . capacity ( expected Size )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġthread - safe Ġset Ġbacked Ġby Ġa Ġhash Ġmap . ĠThe Ġset Ġis Ġbacked Ġby Ġa Ġ[ Ġ] Ġinstance , Ġand Ġthus Ġcar ries Ġthe Ġsame Ġconcurrency Ġguarantees . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUn like Ġ` HashSet `, Ġthis Ġclass Ġdoes ĠNOT Ġallow Ġ` null ` Ġto Ġbe Ġused Ġas Ġan Ġelement . ĠThe ĊĠĠĠĠ Ġ* Ġset Ġis Ġserial izable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġempty Ġthread - safe Ġ` Set ` ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 5 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew Concurrent HashSet (): ĠSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCollections . new Set From Map ( Concurrent HashMap ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġthread - safe Ġset Ġbacked Ġby Ġa Ġhash Ġmap Ġand Ġcontaining Ġthe Ġgiven Ġelements . ĠThe Ġset Ġis ĊĠĠĠĠ Ġ* Ġbacked Ġby Ġa Ġ[ Concurrent HashMap ] Ġinstance , Ġand Ġthus Ġcar ries Ġthe Ġsame Ġconcurrency ĊĠĠĠĠ Ġ* Ġguarantees . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUn like Ġ` HashSet `, Ġthis Ġclass Ġdoes ĠNOT Ġallow Ġ` null ` Ġto Ġbe Ġused Ġas Ġan Ġelement . ĠThe ĊĠĠĠĠ Ġ* Ġset Ġis Ġserial izable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġelements Ġthe Ġelements Ġthat Ġthe Ġset Ġshould Ġcontain ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew Ġthread - safe Ġset Ġcontaining Ġthose Ġelements Ġ( minus Ġduplicates ) ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġif Ġ` elements ` Ġor Ġany Ġof Ġits Ġcontents Ġis Ġnull ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 5 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew Concurrent HashSet ( elements : ĠIterable < E >): ĠSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġnew Concurrent HashSet < E >() ĊĠĠĠĠĠĠĠ ĠIter ables . addAll ( set , Ġelements ) ĊĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠLinked HashSet ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable *, Ġempty Ġ` Linked HashSet ` Ġinstance . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġmut ability Ġis Ġnot Ġrequired , Ġuse Ġ[ Immutable Set . of ] Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note Ġfor ĠJava Ġ 7 Ġand Ġlater :** Ġthis Ġmethod Ġis Ġnow Ġunnecessary Ġand Ġshould Ġbe Ġtreated Ġas ĊĠĠĠĠ Ġ* Ġdeprecated . ĠInstead , Ġuse Ġthe Ġ` Linked HashSet ` Ġconstructor Ġdirectly , Ġtaking Ġadvantage Ġof ĊĠĠĠĠ Ġ* Ġthe Ġnew Ġ[" di amond " Ġsyntax ]( http :// goo . gl / iz 2 Wi ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġempty Ġ` Linked HashSet ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew Linked HashSet (): ĠLinked HashSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLinked HashSet () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable * Ġ` Linked HashSet ` Ġinstance Ġcontaining Ġthe Ġgiven Ġelements Ġin Ġorder . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġmut ability Ġis Ġnot Ġrequired Ġand Ġthe Ġelements Ġare Ġnon - null , Ġuse Ġ[ Ġ][ Immutable Set . copyOf ] Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note Ġfor ĠJava Ġ 7 Ġand Ġlater :** Ġif Ġ` elements ` Ġis Ġa Ġ[ Collection ], Ġyou Ġdon 't ĊĠĠĠĠ Ġ* Ġneed Ġthis Ġmethod . ĠInstead , Ġuse Ġthe Ġ` Linked HashSet ` Ġconstructor Ġdirectly , Ġtaking Ġadvantage ĊĠĠĠĠ Ġ* Ġof Ġthe Ġnew Ġ[" di amond " Ġsyntax ]( http :// goo . gl / iz 2 Wi ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOverall , Ġthis Ġmethod Ġis Ġnot Ġvery Ġuseful Ġand Ġwill Ġlikely Ġbe Ġdeprecated Ġin Ġthe Ġfuture . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġelements Ġthe Ġelements Ġthat Ġthe Ġset Ġshould Ġcontain , Ġin Ġorder ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew Ġ` Linked HashSet ` Ġcontaining Ġthose Ġelements Ġ( minus Ġduplicates ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew Linked HashSet ( elements : ĠIterable < E >): ĠLinked HashSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( elements Ġis ĠCollection <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLinked HashSet ( Collections 2 . cast ( elements )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġnew Linked HashSet < E >() ĊĠĠĠĠĠĠĠ ĠIter ables . addAll ( set , Ġelements ) ĊĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ` Linked HashSet ` Ġinstance , Ġwith Ġa Ġhigh Ġenough Ġ" initial Ġcapacity " Ġthat Ġit ĊĠĠĠĠ Ġ* Ġ* should * Ġhold Ġ` expected Size ` Ġelements Ġwithout Ġgrowth . ĠThis Ġbehavior Ġcannot Ġbe ĊĠĠĠĠ Ġ* Ġbroad ly Ġguaranteed , Ġbut Ġit Ġis Ġobserved Ġto Ġbe Ġtrue Ġfor ĠOpen JDK Ġ 1 . 7 . ĠIt Ġalso Ġcan 't Ġbe Ġguaranteed ĊĠĠĠĠ Ġ* Ġthat Ġthe Ġmethod Ġisn 't Ġin advert ently Ġ* over sizing * Ġthe Ġreturned Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġexpected Size Ġthe Ġnumber Ġof Ġelements Ġyou Ġexpect Ġto Ġadd Ġto Ġthe Ġreturned Ġset ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġempty Ġ` Linked HashSet ` Ġwith Ġenough Ġcapacity Ġto Ġhold Ġ` expected Size ` ĊĠĠĠĠ Ġ* Ġelements Ġwithout Ġres izing ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` expected Size ` Ġis Ġnegative ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 1 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew Linked HashSet With Expected Size ( expected Size : ĠInt ): ĠLinked HashSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLinked HashSet ( Maps . capacity ( expected Size )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTree Set ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable *, Ġempty Ġ` Tree Set ` Ġinstance Ġsorted Ġby Ġthe Ġnatural Ġsort Ġordering Ġof ĊĠĠĠĠ Ġ* Ġits Ġelements . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġmut ability Ġis Ġnot Ġrequired , Ġuse Ġ[ Immutable Sorted Set . of ] Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note Ġfor ĠJava Ġ 7 Ġand Ġlater :** Ġthis Ġmethod Ġis Ġnow Ġunnecessary Ġand Ġshould Ġbe Ġtreated Ġas ĊĠĠĠĠ Ġ* Ġdeprecated . ĠInstead , Ġuse Ġthe Ġ` Tree Set ` Ġconstructor Ġdirectly , Ġtaking Ġadvantage Ġof Ġthe Ġnew ĊĠĠĠĠ Ġ* Ġ[" di amond " Ġsyntax ]( http :// goo . gl / iz 2 Wi ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġempty Ġ` Tree Set ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E Ġ: ĠComparable <* >> Ġnew Tree Set (): ĠTree Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTree Set () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable * Ġ` Tree Set ` Ġinstance Ġcontaining Ġthe Ġgiven Ġelements Ġsorted Ġby Ġtheir ĊĠĠĠĠ Ġ* Ġnatural Ġordering . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġmut ability Ġis Ġnot Ġrequired , Ġuse Ġ[ Immutable Sorted Set . copyOf ] ĊĠĠĠĠ Ġ* Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** ĠIf Ġ` elements ` Ġis Ġa Ġ` Sorted Set ` Ġwith Ġan Ġexplicit Ġcomparator , Ġthis ĊĠĠĠĠ Ġ* Ġmethod Ġhas Ġdifferent Ġbehavior Ġthan Ġ[ Tree Set . Tree Set ], Ġwhich Ġreturns Ġa Ġ` Tree Set ` Ġwith Ġthat Ġcomparator . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note Ġfor ĠJava Ġ 7 Ġand Ġlater :** Ġthis Ġmethod Ġis Ġnow Ġunnecessary Ġand Ġshould Ġbe Ġtreated Ġas ĊĠĠĠĠ Ġ* Ġdeprecated . ĠInstead , Ġuse Ġthe Ġ` Tree Set ` Ġconstructor Ġdirectly , Ġtaking Ġadvantage Ġof Ġthe Ġnew ĊĠĠĠĠ Ġ* Ġ[" di amond " Ġsyntax ]( http :// goo . gl / iz 2 Wi ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġjust Ġa Ġsmall Ġconvenience Ġfor Ġcreating Ġan Ġempty Ġset Ġand Ġthen Ġcalling Ġ[ Ġ][ Iter ables . addAll ]. ĠThis Ġmethod Ġis Ġnot Ġvery Ġuseful Ġand Ġwill Ġlikely Ġbe Ġdeprecated Ġin Ġthe Ġfuture . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġelements Ġthe Ġelements Ġthat Ġthe Ġset Ġshould Ġcontain ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew Ġ` Tree Set ` Ġcontaining Ġthose Ġelements Ġ( minus Ġduplicates ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E Ġ: ĠComparable <* >> Ġnew Tree Set ( elements : ĠIterable < E >): ĠTree Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġnew Tree Set < E >() ĊĠĠĠĠĠĠĠ ĠIter ables . addAll ( set , Ġelements ) ĊĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ* mutable *, Ġempty Ġ` Tree Set ` Ġinstance Ġwith Ġthe Ġgiven Ġcomparator . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġmut ability Ġis Ġnot Ġrequired , Ġuse Ġ` Immutable Sorted Set . ordered By ( comparator ). build ()` Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note Ġfor ĠJava Ġ 7 Ġand Ġlater :** Ġthis Ġmethod Ġis Ġnow Ġunnecessary Ġand Ġshould Ġbe Ġtreated Ġas ĊĠĠĠĠ Ġ* Ġdeprecated . ĠInstead , Ġuse Ġthe Ġ` Tree Set ` Ġconstructor Ġdirectly , Ġtaking Ġadvantage Ġof Ġthe Ġnew ĊĠĠĠĠ Ġ* Ġ[" di amond " Ġsyntax ]( http :// goo . gl / iz 2 Wi ). ĠOne Ġcave at Ġto Ġthis Ġis Ġthat Ġthe Ġ` Tree Set ` Ġconstructor Ġuses Ġa Ġnull Ġ` Comparator ` Ġto Ġmean Ġ" natural Ġordering ," Ġwhereas Ġthis ĊĠĠĠĠ Ġ* Ġfactory Ġreject s Ġnull . ĠClean Ġyour Ġcode Ġaccordingly . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcomparator Ġthe Ġcomparator Ġto Ġuse Ġto Ġsort Ġthe Ġset ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġempty Ġ` Tree Set ` ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġif Ġ` comparator ` Ġis Ġnull ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew Tree Set ( comparator : ĠComparator < in ĠE >): ĠTree Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTree Set ( checkNotNull ( comparator )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġan Ġempty Ġ` Set ` Ġthat Ġuses Ġidentity Ġto Ġdetermine Ġequality . ĠIt Ġcomp ares Ġobject ĊĠĠĠĠ Ġ* Ġreferences , Ġinstead Ġof Ġcalling Ġ` equals `, Ġto Ġdetermine Ġwhether Ġa Ġprovided Ġobject Ġmatches ĊĠĠĠĠ Ġ* Ġan Ġelement Ġin Ġthe Ġset . ĠFor Ġexample , Ġ` contains ` Ġreturns Ġ` false ` Ġwhen Ġpassed Ġan ĊĠĠĠĠ Ġ* Ġobject Ġthat Ġequals Ġa Ġset Ġmember , Ġbut Ġisn 't Ġthe Ġsame Ġinstance . ĠThis Ġbehavior Ġis Ġsimilar Ġto Ġthe ĊĠĠĠĠ Ġ* Ġway Ġ` Identity HashMap ` Ġhandles Ġkey Ġlook ups . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 8 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġnew Identity HashSet (): ĠSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCollections . new Set From Map ( Maps . new Identity HashMap ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġan Ġempty Ġ` Copy On Write Array Set ` Ġinstance . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** Ġif Ġyou Ġneed Ġan Ġimmutable Ġempty Ġ[ Set ], Ġuse Ġ[ Collections . empty Set ] ĊĠĠĠĠ Ġ* Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġempty Ġ` Copy On Write Array Set ` ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 2 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ G wt In compatible Ġ// ĠCopy On Write Array Set ĊĠĠĠ Ġfun Ġ< E > Ġnew Copy On Write Array Set (): ĠCopy On Write Array Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCopy On Write Array Set () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ` Copy On Write Array Set ` Ġinstance Ġcontaining Ġthe Ġgiven Ġelements . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġelements Ġthe Ġelements Ġthat Ġthe Ġset Ġshould Ġcontain , Ġin Ġorder ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew Ġ` Copy On Write Array Set ` Ġcontaining Ġthose Ġelements ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 2 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ G wt In compatible Ġ// ĠCopy On Write Array Set ĊĠĠĠ Ġfun Ġ< E > Ġnew Copy On Write Array Set ( elements : ĠIterable < E >): ĠCopy On Write Array Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġcopy Ġelements Ġto Ġan ĠArrayList Ġfirst , Ġrather Ġthan Ġin cur ring Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġquadr atic Ġcost Ġof Ġadding Ġthem Ġto Ġthe ĠCO W AS Ġdirectly . ĊĠĠĠĠĠĠĠ Ġval Ġelements Collection Ġ= Ġif Ġ( elements Ġis ĠCollection <* >) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollections 2 . cast ( elements ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLists . newArrayList ( elements ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCopy On Write Array Set ( elements Collection ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġan Ġ` Enum Set ` Ġconsisting Ġof Ġall Ġenum Ġvalues Ġthat Ġare Ġnot Ġin Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġcollection . ĠIf Ġthe Ġcollection Ġis Ġan Ġ[ Enum Set ], Ġthis Ġmethod Ġhas Ġthe Ġsame Ġbehavior Ġas ĊĠĠĠĠ Ġ* Ġ[ Enum Set . complement Of ]. ĠOtherwise , Ġthe Ġspecified Ġcollection Ġmust Ġcontain Ġat Ġleast Ġone ĊĠĠĠĠ Ġ* Ġelement , Ġin Ġorder Ġto Ġdetermine Ġthe Ġelement Ġtype . ĠIf Ġthe Ġcollection Ġcould Ġbe Ġempty , Ġuse Ġ[ Ġ][ . complement Of ] Ġinstead Ġof Ġthis Ġmethod . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcollection Ġthe Ġcollection Ġwhose Ġcomplement Ġshould Ġbe Ġstored Ġin Ġthe Ġenum Ġset ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġmod ifiable Ġ` Enum Set ` Ġcontaining Ġall Ġvalues Ġof Ġthe Ġenum Ġthat Ġaren 't Ġpresent ĊĠĠĠĠ Ġ* Ġin Ġthe Ġgiven Ġcollection ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` collection ` Ġis Ġnot Ġan Ġ` Enum Set ` Ġinstance Ġand ĊĠĠĠĠ Ġ* Ġcontains Ġno Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E Ġ: ĠEnum < E >> Ġcomplement Of ( collection : ĠCollection < E >): ĠEnum Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( collection Ġis ĠEnum Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEnum Set . complement Of ( collection Ġas ĠEnum Set < E >) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcheck Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! collection . isEmpty (), Ġ" collection Ġis Ġempty ; Ġuse Ġthe Ġother Ġversion Ġof Ġthis Ġmethod ") ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġcollection . iterator (). next (). get Decl aring Class () ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Comp lement By Hand ( collection , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġan Ġ` Enum Set ` Ġconsisting Ġof Ġall Ġenum Ġvalues Ġthat Ġare Ġnot Ġin Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġcollection . ĠThis Ġis Ġequivalent Ġto Ġ[ Enum Set . complement Of ], Ġbut Ġcan Ġact Ġon Ġany Ġinput ĊĠĠĠĠ Ġ* Ġcollection , Ġas Ġlong Ġas Ġthe Ġelements Ġare Ġof Ġenum Ġtype . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcollection Ġthe Ġcollection Ġwhose Ġcomplement Ġshould Ġbe Ġstored Ġin Ġthe Ġ` Enum Set ` ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġthe Ġtype Ġof Ġthe Ġelements Ġin Ġthe Ġset ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew , Ġmod ifiable Ġ` Enum Set ` Ġinitially Ġcontaining Ġall Ġthe Ġvalues Ġof Ġthe Ġenum Ġnot ĊĠĠĠĠ Ġ* Ġpresent Ġin Ġthe Ġgiven Ġcollection ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E Ġ: ĠEnum < E >> Ġcomplement Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection : ĠCollection < E >, Ġtype : ĠClass < E >): ĠEnum Set < E > Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( collection ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( collection Ġis ĠEnum Set <* >) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnum Set . complement Of ( collection Ġas ĠEnum Set < E >) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Comp lement By Hand ( collection , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< E Ġ: ĠEnum < E >> Ġmake Comp lement By Hand ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection : ĠCollection < E >, Ġtype : ĠClass < E >): ĠEnum Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠEnum Set . all Of ( type ) ĊĠĠĠĠĠĠĠ Ġresult . removeAll ( collection ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġset Ġbacked Ġby Ġthe Ġspecified Ġmap . ĠThe Ġresulting Ġset Ġdisplays Ġthe Ġsame Ġordering , ĊĠĠĠĠ Ġ* Ġconcurrency , Ġand Ġperformance Ġcharacteristics Ġas Ġthe Ġbacking Ġmap . ĠIn Ġess ence , Ġthis Ġfactory ĊĠĠĠĠ Ġ* Ġmethod Ġprovides Ġa Ġ[ Set ] Ġimplementation Ġcorresponding Ġto Ġany Ġ[ Map ] Ġimplementation . ĊĠĠĠĠ Ġ* ĠThere Ġis Ġno Ġneed Ġto Ġuse Ġthis Ġmethod Ġon Ġa Ġ[ Map ] Ġimplementation Ġthat Ġalready Ġhas Ġa ĊĠĠĠĠ Ġ* Ġcorresponding Ġ[ Set ] Ġimplementation Ġ( such Ġas Ġ[ java . util . HashMap ] Ġor Ġ[ Ġ] ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠEach Ġmethod Ġinvocation Ġon Ġthe Ġset Ġreturned Ġby Ġthis Ġmethod Ġresults Ġin Ġexactly Ġone Ġmethod ĊĠĠĠĠ Ġ* Ġinvocation Ġon Ġthe Ġbacking Ġmap Ġor Ġits Ġ` keySet ` Ġview , Ġwith Ġone Ġexception . ĠThe Ġ` addAll ` Ġmethod Ġis Ġimplemented Ġas Ġa Ġsequence Ġof Ġ` put ` Ġinv ocations Ġon Ġthe Ġbacking Ġmap . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġspecified Ġmap Ġmust Ġbe Ġempty Ġat Ġthe Ġtime Ġthis Ġmethod Ġis Ġinvoked , Ġand Ġshould Ġnot Ġbe ĊĠĠĠĠ Ġ* Ġaccessed Ġdirectly Ġafter Ġthis Ġmethod Ġreturns . ĠThese Ġconditions Ġare Ġens ured Ġif Ġthe Ġmap Ġis Ġcreated ĊĠĠĠĠ Ġ* Ġempty , Ġpassed Ġdirectly Ġto Ġthis Ġmethod , Ġand Ġno Ġreference Ġto Ġthe Ġmap Ġis Ġretained , Ġas Ġillustr ated ĊĠĠĠĠ Ġ* Ġin Ġthe Ġfollowing Ġcode Ġfragment : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< pre >` Set < Object > Ġidentity HashSet Ġ= ĠSets . new Set From Map ( ĊĠĠĠĠ Ġ* Ġnew ĠIdentity HashMap < Object , ĠBoolean >()); ĊĠĠĠ Ġ` </ pre > Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġset Ġis Ġserial izable Ġif Ġthe Ġbacking Ġmap Ġis . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmap Ġthe Ġbacking Ġmap ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġset Ġbacked Ġby Ġthe Ġmap ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` map ` Ġis Ġnot Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated (" Use Ġ{@ link ĠCollections # new Set From Map } Ġinstead .") ĊĠĠĠ Ġfun Ġ< E > Ġnew Set From Map ( map : ĠMap < E , ĠBoolean >): ĠSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCollections . new Set From Map ( map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġun modifiable Ġview Ġof Ġa Ġset Ġwhich Ġmay Ġbe Ġbacked Ġby Ġother Ġsets ; Ġthis Ġview Ġwill Ġchange Ġas Ġthe ĊĠĠĠĠ Ġ* Ġbacking Ġsets Ġdo . ĠContains Ġmethods Ġto Ġcopy Ġthe Ġdata Ġinto Ġa Ġnew Ġset Ġwhich Ġwill Ġthen Ġremain ĊĠĠĠĠ Ġ* Ġstable . ĠThere Ġis Ġusually Ġno Ġreason Ġto Ġretain Ġa Ġreference Ġof Ġtype Ġ` Set View `; Ġtypically , ĊĠĠĠĠ Ġ* Ġyou Ġeither Ġuse Ġit Ġas Ġa Ġplain Ġ[ Set ], Ġor Ġimmediately Ġinvoke Ġ[. immutable Copy ] Ġor ĊĠĠĠĠ Ġ* Ġ[. copy Into ] Ġand Ġforget Ġthe Ġ` Set View ` Ġitself . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 2 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġclass ĠSet View < E > Ġprivate Ġconstructor () Ġ// Ġno Ġsubclasses Ġbut Ġour Ġown ĊĠĠĠĠĠĠĠ Ġ: ĠAbstract Set < E >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġan Ġimmutable Ġcopy Ġof Ġthe Ġcurrent Ġcontents Ġof Ġthis Ġset Ġview . ĠDoes Ġnot Ġsupport Ġnull ĊĠĠĠĠĠĠĠĠ Ġ* Ġelements . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ** Warning :** Ġthis Ġmay Ġhave Ġunexpected Ġresults Ġif Ġa Ġbacking Ġset Ġof Ġthis Ġview Ġuses Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġnon standard Ġnot ion Ġof Ġe quivalence , Ġfor Ġexample Ġif Ġit Ġis Ġa Ġ[ Tree Set ] Ġusing Ġa Ġcomparator ĊĠĠĠĠĠĠĠĠ Ġ* Ġthat Ġis Ġinconsistent Ġwith Ġ[ Object . equals ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġimmutable Copy (): ĠImmutable Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImmutable Set . copyOf ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCop ies Ġthe Ġcurrent Ġcontents Ġof Ġthis Ġset Ġview Ġinto Ġan Ġexisting Ġset . ĠThis Ġmethod Ġhas Ġequivalent ĊĠĠĠĠĠĠĠĠ Ġ* Ġbehavior Ġto Ġ` set . addAll ( this )`, Ġassuming Ġthat Ġall Ġthe Ġsets Ġinvolved Ġare Ġbased Ġon Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġsame Ġnot ion Ġof Ġe quivalence . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġa Ġreference Ġto Ġ` set `, Ġfor Ġconvenience ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠNote : ĠS Ġshould Ġlog ically Ġextend ĠSet <? Ġsuper ĠE > Ġbut Ġcan 't Ġdue Ġto Ġeither ĊĠĠĠĠĠĠĠ Ġ// Ġsome Ġjav ac Ġbug Ġor Ġsome Ġweird ness Ġin Ġthe Ġspec , Ġnot Ġsure Ġwhich . ĊĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġ< S Ġ: ĠSet < E >> Ġcopy Into ( set : ĠS ): ĠS Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset . addAll ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGu arante ed Ġto Ġthrow Ġan Ġexception Ġand Ġleave Ġthe Ġcollection Ġun modified . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġalways ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Unsupported Ġoperation .") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd ( e : ĠE ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGu arante ed Ġto Ġthrow Ġan Ġexception Ġand Ġleave Ġthe Ġcollection Ġun modified . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġalways ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Unsupported Ġoperation .") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove (` object `: ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGu arante ed Ġto Ġthrow Ġan Ġexception Ġand Ġleave Ġthe Ġcollection Ġun modified . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġalways ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Unsupported Ġoperation .") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd All ( new Elements : ĠCollection < E >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGu arante ed Ġto Ġthrow Ġan Ġexception Ġand Ġleave Ġthe Ġcollection Ġun modified . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġalways ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Unsupported Ġoperation .") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove All ( old Elements : ĠCollection < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGu arante ed Ġto Ġthrow Ġan Ġexception Ġand Ġleave Ġthe Ġcollection Ġun modified . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġalways ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Unsupported Ġoperation .") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove If ( filter : Ġjava . util . function . Predicate < in ĠE >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGu arante ed Ġto Ġthrow Ġan Ġexception Ġand Ġleave Ġthe Ġcollection Ġun modified . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġalways ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Unsupported Ġoperation .") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġretain All ( elements To Keep : ĠCollection < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGu arante ed Ġto Ġthrow Ġan Ġexception Ġand Ġleave Ġthe Ġcollection Ġun modified . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġalways ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Unsupported Ġoperation .") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠScope Ġthe Ġreturn Ġtype Ġto Ġ[ Un modifiable Iterator ] Ġto Ġensure Ġthis Ġis Ġan Ġun modifiable Ġview . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ since Ġ 2 0 . 0 Ġ( present Ġwith Ġreturn Ġtype Ġ[ Iterator ] Ġsince Ġ 2 . 0 ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġabstract Ġoverride Ġfun Ġiterator (): ĠUn modifiable Iterator < E > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġun modifiable Ġ** view ** Ġof Ġthe Ġunion Ġof Ġtwo Ġsets . ĠThe Ġreturned Ġset Ġcontains Ġall ĊĠĠĠĠ Ġ* Ġelements Ġthat Ġare Ġcontained Ġin Ġeither Ġbacking Ġset . ĠIter ating Ġover Ġthe Ġreturned Ġset Ġiter ates ĊĠĠĠĠ Ġ* Ġfirst Ġover Ġall Ġthe Ġelements Ġof Ġ` set 1 `, Ġthen Ġover Ġeach Ġelement Ġof Ġ` set 2 `, Ġin Ġorder , ĊĠĠĠĠ Ġ* Ġthat Ġis Ġnot Ġcontained Ġin Ġ` set 1 `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠResults Ġare Ġundefined Ġif Ġ` set 1 ` Ġand Ġ` set 2 ` Ġare Ġsets Ġbased Ġon Ġdifferent ĊĠĠĠĠ Ġ* Ġe quivalence Ġrelations Ġ( as Ġ[ HashSet ], Ġ[ Tree Set ], Ġand Ġthe Ġ[ Map . keySet ] Ġof Ġan ĊĠĠĠĠ Ġ* Ġ` Identity HashMap ` Ġall Ġare ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġunion ( set 1 : ĠSet < E >, Ġset 2 : ĠSet < E >): ĠSet View < E > Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( set 1 , Ġ" set 1 ") ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( set 2 , Ġ" set 2 ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠSet View < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġset 1 . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġset 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set 1 . contains ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . isEmpty () Ġ&& Ġset 2 . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠUn modifiable Iterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Iterator < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġitr 1 Ġ= Ġset 1 . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġitr 2 Ġ= Ġset 2 . iterator () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompute Next (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( itr 1 . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitr 1 . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( itr 2 . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġitr 2 . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set 1 . contains ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġend Of Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstream (): ĠStream < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStream . concat ( set 1 . stream (), Ġset 2 . stream (). filter Ġ{ Ġe Ġ-> Ġ! set 1 . contains ( e ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparallel Stream (): ĠStream < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstream (). parallel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġcontains (` object `: ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . contains (` object `) Ġ|| Ġset 2 . contains (` object `) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠSet < E >> Ġcopy Into ( set : ĠS ): ĠS Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . addAll ( set 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . addAll ( set 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimmutable Copy (): ĠImmutable Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImmutable Set . Builder < E >(). addAll ( set 1 ). addAll ( set 2 ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġun modifiable Ġ** view ** Ġof Ġthe Ġintersection Ġof Ġtwo Ġsets . ĠThe Ġreturned Ġset Ġcontains ĊĠĠĠĠ Ġ* Ġall Ġelements Ġthat Ġare Ġcontained Ġby Ġboth Ġbacking Ġsets . ĠThe Ġiteration Ġorder Ġof Ġthe Ġreturned Ġset ĊĠĠĠĠ Ġ* Ġmatches Ġthat Ġof Ġ` set 1 `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠResults Ġare Ġundefined Ġif Ġ` set 1 ` Ġand Ġ` set 2 ` Ġare Ġsets Ġbased Ġon Ġdifferent ĊĠĠĠĠ Ġ* Ġe quivalence Ġrelations Ġ( as Ġ` HashSet `, Ġ` Tree Set `, Ġand Ġthe Ġkey Set Ġof Ġan Ġ` Identity HashMap ` Ġall Ġare ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Note :** ĠThe Ġreturned Ġview Ġperforms Ġslightly Ġbetter Ġwhen Ġ` set 1 ` Ġis Ġthe Ġsmaller Ġof ĊĠĠĠĠ Ġ* Ġthe Ġtwo Ġsets . ĠIf Ġyou Ġhave Ġreason Ġto Ġbelieve Ġone Ġof Ġyour Ġsets Ġwill Ġgenerally Ġbe Ġsmaller Ġthan Ġthe ĊĠĠĠĠ Ġ* Ġother , Ġpass Ġit Ġfirst . ĠUnfortunately , Ġsince Ġthis Ġmethod Ġsets Ġthe Ġgeneric Ġtype Ġof Ġthe Ġreturned ĊĠĠĠĠ Ġ* Ġset Ġbased Ġon Ġthe Ġtype Ġof Ġthe Ġfirst Ġset Ġpassed , Ġthis Ġcould Ġin Ġrare Ġcases Ġforce Ġyou Ġto Ġmake Ġa ĊĠĠĠĠ Ġ* Ġcast , Ġfor Ġexample : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< pre >` Set < Object > Ġa F ew Bad Objects Ġ= Ġ... ĊĠĠĠĠ Ġ* ĠSet < String > Ġmany Bad Strings Ġ= Ġ... ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ// Ġimpossible Ġfor Ġa Ġnon - String Ġto Ġbe Ġin Ġthe Ġintersection ĊĠĠĠĠ Ġ* ĠSup press Warnings (" unchecked ") ĊĠĠĠĠ Ġ* ĠSet < String > Ġbad Strings Ġ= Ġ( Set ) ĠSets . intersection ( ĊĠĠĠĠ Ġ* Ġa F ew Bad Objects , Ġmany Bad Strings ); ĊĠĠĠ Ġ` </ pre > Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġun fortun ate , Ġbut Ġshould Ġcome Ġup Ġonly Ġvery Ġrare ly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġintersection ( set 1 : ĠSet < E >, Ġset 2 : ĠSet < *> ): ĠSet View < E > Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( set 1 , Ġ" set 1 ") ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( set 2 , Ġ" set 2 ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠSet View < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠUn modifiable Iterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Iterator < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġitr Ġ= Ġset 1 . iterator () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompute Next (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( itr . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġitr . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( set 2 . contains ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġend Of Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstream (): ĠStream < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . stream (). filter Ġ{ Ġset 2 . contains ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparallel Stream (): ĠStream < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . parallel Stream (). filter Ġ{ Ġset 2 . contains ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġset 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( set 2 . contains ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCollections . dis joint ( set 1 , Ġset 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġcontains (` object `: ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . contains (` object `) Ġ&& Ġset 2 . contains (` object `) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontains All ( collection : ĠCollection < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . contains All ( collection ) Ġ&& Ġset 2 . contains All ( collection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġun modifiable Ġ** view ** Ġof Ġthe Ġdifference Ġof Ġtwo Ġsets . ĠThe Ġreturned Ġset Ġcontains ĊĠĠĠĠ Ġ* Ġall Ġelements Ġthat Ġare Ġcontained Ġby Ġ` set 1 ` Ġand Ġnot Ġcontained Ġby Ġ` set 2 `. Ġ` set 2 ` ĊĠĠĠĠ Ġ* Ġmay Ġalso Ġcontain Ġelements Ġnot Ġpresent Ġin Ġ` set 1 `; Ġthese Ġare Ġsimply Ġignored . ĠThe Ġiteration ĊĠĠĠĠ Ġ* Ġorder Ġof Ġthe Ġreturned Ġset Ġmatches Ġthat Ġof Ġ` set 1 `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠResults Ġare Ġundefined Ġif Ġ` set 1 ` Ġand Ġ` set 2 ` Ġare Ġsets Ġbased Ġon Ġdifferent ĊĠĠĠĠ Ġ* Ġe quivalence Ġrelations Ġ( as Ġ` HashSet `, Ġ` Tree Set `, Ġand Ġthe Ġkey Set Ġof Ġan Ġ` Identity HashMap ` Ġall Ġare ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġdifference ( set 1 : ĠSet < E >, Ġset 2 : ĠSet < *> ): ĠSet View < E > Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( set 1 , Ġ" set 1 ") ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( set 2 , Ġ" set 2 ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠSet View < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠUn modifiable Iterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Iterator < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġitr Ġ= Ġset 1 . iterator () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompute Next (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( itr . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġitr . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set 2 . contains ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġend Of Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstream (): ĠStream < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . stream (). filter Ġ{ Ġe Ġ-> Ġ! set 2 . contains ( e ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparallel Stream (): ĠStream < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . parallel Stream (). filter Ġ{ Ġe Ġ-> Ġ! set 2 . contains ( e ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġset 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set 2 . contains ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 2 . contains All ( set 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġcontains ( element : ĠE ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . contains ( element ) Ġ&& Ġ! set 2 . contains ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġun modifiable Ġ** view ** Ġof Ġthe Ġsymmetric Ġdifference Ġof Ġtwo Ġsets . ĠThe Ġreturned Ġset ĊĠĠĠĠ Ġ* Ġcontains Ġall Ġelements Ġthat Ġare Ġcontained Ġin Ġeither Ġ` set 1 ` Ġor Ġ` set 2 ` Ġbut Ġnot Ġin ĊĠĠĠĠ Ġ* Ġboth . ĠThe Ġiteration Ġorder Ġof Ġthe Ġreturned Ġset Ġis Ġundefined . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠResults Ġare Ġundefined Ġif Ġ` set 1 ` Ġand Ġ` set 2 ` Ġare Ġsets Ġbased Ġon Ġdifferent ĊĠĠĠĠ Ġ* Ġe quivalence Ġrelations Ġ( as Ġ` HashSet `, Ġ` Tree Set `, Ġand Ġthe Ġkey Set Ġof Ġan Ġ` Identity HashMap ` Ġall Ġare ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 3 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġsymmetric Difference ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset 1 : ĠSet < E >, Ġset 2 : ĠSet < E >): ĠSet View < E > Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( set 1 , Ġ" set 1 ") ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( set 2 , Ġ" set 2 ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠSet View < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠUn modifiable Iterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr 1 Ġ= Ġset 1 . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr 2 Ġ= Ġset 2 . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Iterator < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġoverride Ġfun Ġcompute Next (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( itr 1 . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelem 1 Ġ= Ġitr 1 . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set 2 . contains ( elem 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelem 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( itr 2 . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelem 2 Ġ= Ġitr 2 . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set 1 . contains ( elem 2 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelem 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġend Of Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġset 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set 2 . contains ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( e Ġin Ġset 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! set 1 . contains ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 Ġ== Ġset 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġcontains ( element : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset 1 . contains ( element ) Ġxor Ġset 2 . contains ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġelements Ġof Ġ` un filtered ` Ġthat Ġsatisfy Ġa Ġpredicate . ĠThe Ġreturned Ġset Ġis Ġa Ġlive ĊĠĠĠĠ Ġ* Ġview Ġof Ġ` un filtered `; Ġchanges Ġto Ġone Ġaffect Ġthe Ġother . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresulting Ġset 's Ġiterator Ġdoes Ġnot Ġsupport Ġ` remove ()`, Ġbut Ġall Ġother Ġset Ġmethods ĊĠĠĠĠ Ġ* Ġare Ġsupported . ĠWhen Ġgiven Ġan Ġelement Ġthat Ġdoesn 't Ġsatisfy Ġthe Ġpredicate , Ġthe Ġset 's Ġ` add ()` Ġand Ġ` addAll ()` Ġmethods Ġthrow Ġan Ġ[ IllegalArgumentException ]. ĠWhen Ġmethods ĊĠĠĠĠ Ġ* Ġsuch Ġas Ġ` removeAll ()` Ġand Ġ` clear ()` Ġare Ġcalled Ġon Ġthe Ġfiltered Ġset , Ġonly Ġelements ĊĠĠĠĠ Ġ* Ġthat Ġsatisfy Ġthe Ġfilter Ġwill Ġbe Ġremoved Ġfrom Ġthe Ġunderlying Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġset Ġisn 't Ġthread safe Ġor Ġserial izable , Ġeven Ġif Ġ` un filtered ` Ġis . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMany Ġof Ġthe Ġfiltered Ġset 's Ġmethods , Ġsuch Ġas Ġ` size ()`, Ġiterate Ġacross Ġevery Ġelement Ġin ĊĠĠĠĠ Ġ* Ġthe Ġunderlying Ġset Ġand Ġdetermine Ġwhich Ġelements Ġsatisfy Ġthe Ġfilter . ĠWhen Ġa Ġlive Ġview Ġis ĊĠĠĠĠ Ġ* Ġ* not * Ġneeded , Ġit Ġmay Ġbe Ġfaster Ġto Ġcopy Ġ` Iter ables . filter ( un filtered , Ġpredicate )` Ġand ĊĠĠĠĠ Ġ* Ġuse Ġthe Ġcopy . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Warning :** Ġ` predicate ` Ġmust Ġbe Ġ* consistent Ġwith Ġequals *, Ġas Ġdocumented Ġat ĊĠĠĠĠ Ġ* Ġ[ Predicate . apply ]. ĠDo Ġnot Ġprovide Ġa Ġpredicate Ġsuch Ġas Ġ` Pred icates . instance Of ( ArrayList . class )`, Ġwhich Ġis Ġinconsistent Ġwith Ġequals . Ġ( See Ġ[ Ġ][ Iter ables . filter ] Ġfor Ġrelated Ġfunctionality .) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Java Ġ 8 Ġusers :** Ġmany Ġuse Ġcases Ġfor Ġthis Ġmethod Ġare Ġbetter Ġaddressed Ġby Ġ[ Ġ][ java . util . stream . Stream . filter ]. ĠThis Ġmethod Ġis Ġnot Ġbeing Ġdeprecated , Ġbut Ġwe Ġg ently Ġencourage ĊĠĠĠĠ Ġ* Ġyou Ġto Ġmigrate Ġto Ġstreams . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// ĠTODO ( ke vin b ): Ġhow Ġto Ġomit Ġthat Ġlast Ġsentence Ġwhen Ġbuilding ĠG WT Ġjavadoc ? ĊĠĠĠ Ġfun Ġ< E > Ġfilter ( un filtered : ĠSet < E >, Ġpredicate : ĠPredicate < in ĠE >): ĠSet < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( un filtered Ġis ĠSorted Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter ( un filtered Ġas ĠSorted Set < E >, Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( un filtered Ġis ĠFilter ed Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSupport Ġclear (), Ġremove All (), Ġand Ġretain All () Ġwhen Ġfiltering Ġa Ġfiltered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcollection . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġun filtered Ġas ĠFilter ed Set < E > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcombined Predicate Ġ= ĠPred icates . and ( filtered . predicate , Ġpredicate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Set ( filtered . un filtered Ġas ĠSet < E >, Ġcombined Predicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Set ( checkNotNull ( un filtered ), ĠcheckNotNull ( predicate )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġelements Ġof Ġa Ġ` Sorted Set `, Ġ` un filtered `, Ġthat Ġsatisfy Ġa Ġpredicate . ĠThe ĊĠĠĠĠ Ġ* Ġreturned Ġset Ġis Ġa Ġlive Ġview Ġof Ġ` un filtered `; Ġchanges Ġto Ġone Ġaffect Ġthe Ġother . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresulting Ġset 's Ġiterator Ġdoes Ġnot Ġsupport Ġ` remove ()`, Ġbut Ġall Ġother Ġset Ġmethods ĊĠĠĠĠ Ġ* Ġare Ġsupported . ĠWhen Ġgiven Ġan Ġelement Ġthat Ġdoesn 't Ġsatisfy Ġthe Ġpredicate , Ġthe Ġset 's Ġ` add ()` Ġand Ġ` addAll ()` Ġmethods Ġthrow Ġan Ġ[ IllegalArgumentException ]. ĠWhen Ġmethods ĊĠĠĠĠ Ġ* Ġsuch Ġas Ġ` removeAll ()` Ġand Ġ` clear ()` Ġare Ġcalled Ġon Ġthe Ġfiltered Ġset , Ġonly Ġelements ĊĠĠĠĠ Ġ* Ġthat Ġsatisfy Ġthe Ġfilter Ġwill Ġbe Ġremoved Ġfrom Ġthe Ġunderlying Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġset Ġisn 't Ġthread safe Ġor Ġserial izable , Ġeven Ġif Ġ` un filtered ` Ġis . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMany Ġof Ġthe Ġfiltered Ġset 's Ġmethods , Ġsuch Ġas Ġ` size ()`, Ġiterate Ġacross Ġevery Ġelement Ġin ĊĠĠĠĠ Ġ* Ġthe Ġunderlying Ġset Ġand Ġdetermine Ġwhich Ġelements Ġsatisfy Ġthe Ġfilter . ĠWhen Ġa Ġlive Ġview Ġis ĊĠĠĠĠ Ġ* Ġ* not * Ġneeded , Ġit Ġmay Ġbe Ġfaster Ġto Ġcopy Ġ` Iter ables . filter ( un filtered , Ġpredicate )` Ġand ĊĠĠĠĠ Ġ* Ġuse Ġthe Ġcopy . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Warning :** Ġ` predicate ` Ġmust Ġbe Ġ* consistent Ġwith Ġequals *, Ġas Ġdocumented Ġat ĊĠĠĠĠ Ġ* Ġ[ Predicate . apply ]. ĠDo Ġnot Ġprovide Ġa Ġpredicate Ġsuch Ġas Ġ` Pred icates . instance Of ( ArrayList . class )`, Ġwhich Ġis Ġinconsistent Ġwith Ġequals . Ġ( See Ġ[ Ġ][ Iter ables . filter ] Ġfor Ġrelated Ġfunctionality .) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 1 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġfilter ( un filtered : ĠSorted Set < E >, Ġpredicate : ĠPredicate < in ĠE >): ĠSorted Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( un filtered Ġis ĠFilter ed Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSupport Ġclear (), Ġremove All (), Ġand Ġretain All () Ġwhen Ġfiltering Ġa Ġfiltered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcollection . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġun filtered Ġas ĠFilter ed Set < E > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcombined Predicate Ġ= ĠPred icates . and ( filtered . predicate , Ġpredicate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Sorted Set ( filtered . un filtered Ġas ĠSorted Set < E >, Ġcombined Predicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Sorted Set ( checkNotNull ( un filtered ), ĠcheckNotNull ( predicate )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġelements Ġof Ġa Ġ` Navig able Set `, Ġ` un filtered `, Ġthat Ġsatisfy Ġa Ġpredicate . ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġset Ġis Ġa Ġlive Ġview Ġof Ġ` un filtered `; Ġchanges Ġto Ġone Ġaffect Ġthe Ġother . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresulting Ġset 's Ġiterator Ġdoes Ġnot Ġsupport Ġ` remove ()`, Ġbut Ġall Ġother Ġset Ġmethods ĊĠĠĠĠ Ġ* Ġare Ġsupported . ĠWhen Ġgiven Ġan Ġelement Ġthat Ġdoesn 't Ġsatisfy Ġthe Ġpredicate , Ġthe Ġset 's Ġ` add ()` Ġand Ġ` addAll ()` Ġmethods Ġthrow Ġan Ġ[ IllegalArgumentException ]. ĠWhen Ġmethods ĊĠĠĠĠ Ġ* Ġsuch Ġas Ġ` removeAll ()` Ġand Ġ` clear ()` Ġare Ġcalled Ġon Ġthe Ġfiltered Ġset , Ġonly Ġelements ĊĠĠĠĠ Ġ* Ġthat Ġsatisfy Ġthe Ġfilter Ġwill Ġbe Ġremoved Ġfrom Ġthe Ġunderlying Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġset Ġisn 't Ġthread safe Ġor Ġserial izable , Ġeven Ġif Ġ` un filtered ` Ġis . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMany Ġof Ġthe Ġfiltered Ġset 's Ġmethods , Ġsuch Ġas Ġ` size ()`, Ġiterate Ġacross Ġevery Ġelement Ġin ĊĠĠĠĠ Ġ* Ġthe Ġunderlying Ġset Ġand Ġdetermine Ġwhich Ġelements Ġsatisfy Ġthe Ġfilter . ĠWhen Ġa Ġlive Ġview Ġis ĊĠĠĠĠ Ġ* Ġ* not * Ġneeded , Ġit Ġmay Ġbe Ġfaster Ġto Ġcopy Ġ` Iter ables . filter ( un filtered , Ġpredicate )` Ġand ĊĠĠĠĠ Ġ* Ġuse Ġthe Ġcopy . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Warning :** Ġ` predicate ` Ġmust Ġbe Ġ* consistent Ġwith Ġequals *, Ġas Ġdocumented Ġat ĊĠĠĠĠ Ġ* Ġ[ Predicate . apply ]. ĠDo Ġnot Ġprovide Ġa Ġpredicate Ġsuch Ġas Ġ` Pred icates . instance Of ( ArrayList . class )`, Ġwhich Ġis Ġinconsistent Ġwith Ġequals . Ġ( See Ġ[ Ġ][ Iter ables . filter ] Ġfor Ġrelated Ġfunctionality .) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 4 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ G wt In compatible Ġ// ĠNavig able Set ĊĠĠĠ Ġfun Ġ< E > Ġfilter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun filtered : ĠNavig able Set < E >, Ġpredicate : ĠPredicate < in ĠE >): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( un filtered Ġis ĠFilter ed Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSupport Ġclear (), Ġremove All (), Ġand Ġretain All () Ġwhen Ġfiltering Ġa Ġfiltered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcollection . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġun filtered Ġas ĠFilter ed Set < E > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcombined Predicate Ġ= ĠPred icates . and ( filtered . predicate , Ġpredicate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Navig able Set ( filtered . un filtered Ġas ĠNavig able Set < E >, Ġcombined Predicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Navig able Set ( checkNotNull ( un filtered ), ĠcheckNotNull ( predicate )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġopen Ġclass ĠFilter ed Set < E > Ġinternal Ġconstructor ( un filtered : ĠSet < E >, Ġpredicate : ĠPredicate < in ĠE >) Ġ: ĠFilter ed Collection < E >( un filtered , Ġpredicate ), ĠSet < E > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals (` object `: ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġequals Impl ( this , Ġ` object `) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠhashCode Impl ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġopen Ġclass ĠFilter ed Sorted Set < E > Ġinternal Ġconstructor ( un filtered : ĠSorted Set < E >, Ġpredicate : ĠPredicate < in ĠE >) Ġ: ĠFilter ed Set < E >( un filtered , Ġpredicate ), ĠSorted Set < E > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcomparator (): ĠComparator < in ĠE >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( un filtered Ġas ĠSorted Set < E >). comparator () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsub Set ( from Element : ĠE , Ġto Element : ĠE ): ĠSorted Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Sorted Set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( un filtered Ġas ĠSorted Set < E >). sub Set ( from Element , Ġto Element ), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhead Set ( to Element : ĠE ): ĠSorted Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Sorted Set (( un filtered Ġas ĠSorted Set < E >). head Set ( to Element ), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtail Set ( from Element : ĠE ): ĠSorted Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFilter ed Sorted Set (( un filtered Ġas ĠSorted Set < E >). tail Set ( from Element ), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfirst (): ĠE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ators . find ( un filtered . iterator (), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlast (): ĠE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsorted Un filtered Ġ= Ġun filtered Ġas ĠSorted Set < E > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġsorted Un filtered . last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( predicate . apply ( element )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsorted Un filtered Ġ= Ġsorted Un filtered . head Set ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ G wt In compatible Ġ// ĠNavig able Set ĊĠĠĠ Ġprivate Ġclass ĠFilter ed Navig able Set < E > Ġinternal Ġconstructor ( un filtered : ĠNavig able Set < E >, Ġpredicate : ĠPredicate < in ĠE >) Ġ: ĠFilter ed Sorted Set < E >( un filtered , Ġpredicate ), ĠNavig able Set < E > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġun filtered (): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġun filtered Ġas ĠNavig able Set < E > ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlower ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ators . find < E >( un filtered (). head Set ( e , Ġfalse ). desc ending Iterator (), Ġpredicate , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfloor ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ators . find < E >( un filtered (). head Set ( e , Ġtrue ). desc ending Iterator (), Ġpredicate , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġce iling ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ables . find < E >( un filtered (). tail Set ( e , Ġtrue ), Ġpredicate , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhigher ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ables . find < E >( un filtered (). tail Set ( e , Ġfalse ), Ġpredicate , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpoll First (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ables . remove First Matching ( un filtered (), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpoll Last (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ables . remove First Matching ( un filtered (). desc ending Set (), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescending Set (): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSets . filter ( un filtered (). desc ending Set (), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescending Iterator (): ĠIterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ators . filter ( un filtered (). desc ending Iterator (), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlast (): ĠE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ators . find ( un filtered (). desc ending Iterator (), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsub Set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Element : ĠE , Ġfrom Inclusive : ĠBoolean , Ġto Element : ĠE , Ġto Inclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun filtered (). sub Set ( from Element , Ġfrom Inclusive , Ġto Element , Ġto Inclusive ), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhead Set ( to Element : ĠE , Ġinclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter ( un filtered (). head Set ( to Element , Ġinclusive ), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtail Set ( from Element : ĠE , Ġinclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter ( un filtered (). tail Set ( from Element , Ġinclusive ), Ġpredicate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġevery Ġpossible Ġlist Ġthat Ġcan Ġbe Ġformed Ġby Ġchoosing Ġone Ġelement Ġfrom Ġeach Ġof Ġthe Ġgiven ĊĠĠĠĠ Ġ* Ġsets Ġin Ġorder ; Ġthe Ġ" n - ary Ġ[ Cartesian Ċ Ġ* Ġproduct ]( http :// en . wikipedia . org / wiki / Cartesian _ product )" Ġof Ġthe Ġsets . ĠFor Ġexample : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< pre >` Sets . cart esian Product ( ImmutableList . of ( ĊĠĠĠĠ Ġ* ĠImmutable Set . of ( 1 , Ġ 2 ), ĊĠĠĠĠ Ġ* ĠImmutable Set . of (" A ", Ġ" B ", Ġ" C "))) ĊĠĠĠ Ġ` </ pre > Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġreturns Ġa Ġset Ġcontaining Ġsix Ġlists : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 1 , Ġ" A ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 1 , Ġ" B ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 1 , Ġ" C ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 2 , Ġ" A ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 2 , Ġ" B ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 2 , Ġ" C ") ` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresult Ġis Ġguaranteed Ġto Ġbe Ġin Ġthe Ġ" trad itional ", Ġlex ico graphical Ġorder Ġfor ĠCart esian ĊĠĠĠĠ Ġ* Ġproducts Ġthat Ġyou Ġwould Ġget Ġfrom Ġnesting Ġfor Ġloops : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< pre >` for Ġ( B Ġb 0 Ġ: Ġsets . get ( 0 )) Ġ{ ĊĠĠĠĠ Ġ* Ġfor Ġ( B Ġb 1 Ġ: Ġsets . get ( 1 )) Ġ{ ĊĠĠĠĠ Ġ* Ġ... ĊĠĠĠĠ Ġ* ĠImmutableList < B > Ġtuple Ġ= ĠImmutableList . of ( b 0 , Ġb 1 , Ġ... ); ĊĠĠĠĠ Ġ* Ġ// Ġoperate Ġon Ġtuple ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠ Ġ` </ pre > Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġif Ġany Ġinput Ġset Ġis Ġempty , Ġthe ĠCart esian Ġproduct Ġwill Ġalso Ġbe Ġempty . ĠIf Ġno Ġsets Ġat ĊĠĠĠĠ Ġ* Ġall Ġare Ġprovided Ġ( an Ġempty Ġlist ), Ġthe Ġresulting ĠCart esian Ġproduct Ġhas Ġone Ġelement , Ġan Ġempty ĊĠĠĠĠ Ġ* Ġlist Ġ( counter - int u itive , Ġbut Ġmathematic ally Ġconsistent ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ* Performance Ġnotes :* Ġwhile Ġthe Ġcart esian Ġproduct Ġof Ġsets Ġof Ġsize Ġ` m , Ġn , Ġp ` Ġis Ġa ĊĠĠĠĠ Ġ* Ġset Ġof Ġsize Ġ` m Ġx Ġn Ġx Ġp `, Ġits Ġactual Ġmemory Ġconsumption Ġis Ġmuch Ġsmaller . ĠWhen Ġthe ĊĠĠĠĠ Ġ* Ġcart esian Ġset Ġis Ġconstructed , Ġthe Ġinput Ġsets Ġare Ġmerely Ġcopied . ĠOnly Ġas Ġthe Ġresulting Ġset Ġis ĊĠĠĠĠ Ġ* Ġiter ated Ġare Ġthe Ġindividual Ġlists Ġcreated , Ġand Ġthese Ġare Ġnot Ġretained Ġafter Ġiteration . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsets Ġthe Ġsets Ġto Ġchoose Ġelements Ġfrom , Ġin Ġthe Ġorder Ġthat Ġthe Ġelements Ġchosen Ġfrom Ġthose ĊĠĠĠĠ Ġ* Ġsets Ġshould Ġappear Ġin Ġthe Ġresulting Ġlists ĊĠĠĠĠ Ġ* Ġ@ param Ġ< B > Ġany Ġcommon Ġbase Ġclass Ġshared Ġby Ġall Ġaxes Ġ( oft en Ġjust Ġ[ Object ]) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠCart esian Ġproduct , Ġas Ġan Ġimmutable Ġset Ġcontaining Ġimmutable Ġlists ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġif Ġ` sets `, Ġany Ġone Ġof Ġthe Ġ` sets `, Ġor Ġany Ġelement Ġof Ġa ĊĠĠĠĠ Ġ* Ġprovided Ġset Ġis Ġnull ĊĠĠĠĠ Ġ* Ġ@ since Ġ 2 . 0 ĊĠĠĠ Ġ</ B > Ġ*/ ĊĠĠĠ Ġfun Ġ< B > Ġcart esian Product ( sets : ĠList < Set < B >> ): ĠSet < List < B >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCart esian Set . create ( sets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġevery Ġpossible Ġlist Ġthat Ġcan Ġbe Ġformed Ġby Ġchoosing Ġone Ġelement Ġfrom Ġeach Ġof Ġthe Ġgiven ĊĠĠĠĠ Ġ* Ġsets Ġin Ġorder ; Ġthe Ġ" n - ary Ġ[ Cartesian Ċ Ġ* Ġproduct ]( http :// en . wikipedia . org / wiki / Cartesian _ product )" Ġof Ġthe Ġsets . ĠFor Ġexample : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< pre >` Sets . cart esian Product ( ĊĠĠĠĠ Ġ* ĠImmutable Set . of ( 1 , Ġ 2 ), ĊĠĠĠĠ Ġ* ĠImmutable Set . of (" A ", Ġ" B ", Ġ" C ")) ĊĠĠĠ Ġ` </ pre > Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġreturns Ġa Ġset Ġcontaining Ġsix Ġlists : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 1 , Ġ" A ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 1 , Ġ" B ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 1 , Ġ" C ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 2 , Ġ" A ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 2 , Ġ" B ") ` ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ` ImmutableList . of ( 2 , Ġ" C ") ` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresult Ġis Ġguaranteed Ġto Ġbe Ġin Ġthe Ġ" trad itional ", Ġlex ico graphical Ġorder Ġfor ĠCart esian ĊĠĠĠĠ Ġ* Ġproducts Ġthat Ġyou Ġwould Ġget Ġfrom Ġnesting Ġfor Ġloops : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< pre >` for Ġ( B Ġb 0 Ġ: Ġsets . get ( 0 )) Ġ{ ĊĠĠĠĠ Ġ* Ġfor Ġ( B Ġb 1 Ġ: Ġsets . get ( 1 )) Ġ{ ĊĠĠĠĠ Ġ* Ġ... ĊĠĠĠĠ Ġ* ĠImmutableList < B > Ġtuple Ġ= ĠImmutableList . of ( b 0 , Ġb 1 , Ġ... ); ĊĠĠĠĠ Ġ* Ġ// Ġoperate Ġon Ġtuple ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠ Ġ` </ pre > Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġif Ġany Ġinput Ġset Ġis Ġempty , Ġthe ĠCart esian Ġproduct Ġwill Ġalso Ġbe Ġempty . ĠIf Ġno Ġsets Ġat ĊĠĠĠĠ Ġ* Ġall Ġare Ġprovided Ġ( an Ġempty Ġlist ), Ġthe Ġresulting ĠCart esian Ġproduct Ġhas Ġone Ġelement , Ġan Ġempty ĊĠĠĠĠ Ġ* Ġlist Ġ( counter - int u itive , Ġbut Ġmathematic ally Ġconsistent ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ* Performance Ġnotes :* Ġwhile Ġthe Ġcart esian Ġproduct Ġof Ġsets Ġof Ġsize Ġ` m , Ġn , Ġp ` Ġis Ġa ĊĠĠĠĠ Ġ* Ġset Ġof Ġsize Ġ` m Ġx Ġn Ġx Ġp `, Ġits Ġactual Ġmemory Ġconsumption Ġis Ġmuch Ġsmaller . ĠWhen Ġthe ĊĠĠĠĠ Ġ* Ġcart esian Ġset Ġis Ġconstructed , Ġthe Ġinput Ġsets Ġare Ġmerely Ġcopied . ĠOnly Ġas Ġthe Ġresulting Ġset Ġis ĊĠĠĠĠ Ġ* Ġiter ated Ġare Ġthe Ġindividual Ġlists Ġcreated , Ġand Ġthese Ġare Ġnot Ġretained Ġafter Ġiteration . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsets Ġthe Ġsets Ġto Ġchoose Ġelements Ġfrom , Ġin Ġthe Ġorder Ġthat Ġthe Ġelements Ġchosen Ġfrom Ġthose ĊĠĠĠĠ Ġ* Ġsets Ġshould Ġappear Ġin Ġthe Ġresulting Ġlists ĊĠĠĠĠ Ġ* Ġ@ param Ġ< B > Ġany Ġcommon Ġbase Ġclass Ġshared Ġby Ġall Ġaxes Ġ( oft en Ġjust Ġ[ Object ]) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠCart esian Ġproduct , Ġas Ġan Ġimmutable Ġset Ġcontaining Ġimmutable Ġlists ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġif Ġ` sets `, Ġany Ġone Ġof Ġthe Ġ` sets `, Ġor Ġany Ġelement Ġof Ġa ĊĠĠĠĠ Ġ* Ġprovided Ġset Ġis Ġnull ĊĠĠĠĠ Ġ* Ġ@ since Ġ 2 . 0 ĊĠĠĠ Ġ</ B > Ġ*/ ĊĠĠĠ Ġfun Ġ< B > Ġcart esian Product ( var arg Ġsets : ĠSet < B >): ĠSet < List < B >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcart esian Product ( Arrays . asList (* sets )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠCart esian Set < E > Ġprivate Ġconstructor (@ field : Transient Ġprivate Ġval Ġaxes : ĠImmutableList < Immutable Set < E >>, Ġ@ field : Transient Ġprivate Ġval Ġdelegate : ĠCart esian List < E >) Ġ: ĠForward ing Collection < List < E >> (), ĠSet < List < E >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelegate (): ĠCollection < List < E >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals (` object `: ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWarning : Ġthis Ġis Ġbroken Ġif Ġsize () Ġ== Ġ 0 , Ġso Ġit Ġis Ġcritical Ġthat Ġwe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsubstitute Ġan Ġempty ĠImmutable Set Ġto Ġthe Ġuser Ġin Ġplace Ġof Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` object ` Ġis ĠCart esian Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthat Ġ= Ġ` object ` Ġas ĠCart esian Set < *> ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . axes Ġ== Ġthat !!. axes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . equals (` object `) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWarning : Ġthis Ġis Ġbroken Ġif Ġsize () Ġ== Ġ 0 , Ġso Ġit Ġis Ġcritical Ġthat Ġwe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsubstitute Ġan Ġempty ĠImmutable Set Ġto Ġthe Ġuser Ġin Ġplace Ġof Ġthis ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIt 's Ġa Ġweird Ġformula , Ġbut Ġtests Ġprove Ġit Ġworks . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġadjust Ġ= Ġsize Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġaxes . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadjust Ġ*= Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadjust Ġ= Ġadjust . inv (). inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin ĠG WT , Ġwe Ġhave Ġto Ġdeal Ġwith Ġinteger Ġoverflow Ġcarefully ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhash Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( axis Ġin Ġaxes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 3 1 Ġ* Ġhash Ġ+ Ġsize Ġ/ Ġaxis . size Ġ* Ġaxis . hashCode () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ= Ġhash . inv (). inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhash Ġ+= Ġadjust ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhash . inv (). inv () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun Ġ< E > Ġcreate ( sets : ĠList < Set < E >> ): ĠSet < List < E >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaxes Builder Ġ= ĠImmutableList . Builder < Immutable Set < E >>( sets . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( set Ġin Ġsets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcopy Ġ= ĠImmutable Set . copyOf ( set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( copy . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImmutable Set . of () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaxes Builder . add ( copy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaxes Ġ= Ġaxes Builder . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Axes Ġ= Ġobject Ġ: ĠImmutableList < List < E >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaxes . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( index : ĠInt ): ĠList < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaxes [ index ]. asList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġoverride Ġfun Ġis Partial View (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCart esian Set ( axes , ĠCart esian List ( list Axes )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġset Ġof Ġall Ġpossible Ġsub sets Ġof Ġ` set `. ĠFor Ġexample , Ġ` power Set ( Immutable Set . of ( 1 , Ġ 2 )) ` Ġreturns Ġthe Ġset Ġ` {{ }, Ġ{ 1 }, Ġ{ 2 }, Ġ{ 1 , Ġ 2 }} `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠElements Ġappear Ġin Ġthese Ġsub sets Ġin Ġthe Ġsame Ġiteration Ġorder Ġas Ġthey Ġappeared Ġin Ġthe Ġinput ĊĠĠĠĠ Ġ* Ġset . ĠThe Ġorder Ġin Ġwhich Ġthese Ġsub sets Ġappear Ġin Ġthe Ġouter Ġset Ġis Ġundefined . ĠNote Ġthat Ġthe Ġpower ĊĠĠĠĠ Ġ* Ġset Ġof Ġthe Ġempty Ġset Ġis Ġnot Ġthe Ġempty Ġset , Ġbut Ġa Ġone - element Ġset Ġcontaining Ġthe Ġempty Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġset Ġand Ġits Ġconst it uent Ġsets Ġuse Ġ` equals ` Ġto Ġdecide Ġwhether Ġtwo Ġelements ĊĠĠĠĠ Ġ* Ġare Ġidentical , Ġeven Ġif Ġthe Ġinput Ġset Ġuses Ġa Ġdifferent Ġconcept Ġof Ġe quivalence . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ* Performance Ġnotes :* Ġwhile Ġthe Ġpower Ġset Ġof Ġa Ġset Ġwith Ġsize Ġ` n ` Ġis Ġof Ġsize Ġ` 2 ^ n `, Ġits Ġmemory Ġusage Ġis Ġonly Ġ` O ( n )`. ĠWhen Ġthe Ġpower Ġset Ġis Ġconstructed , Ġthe Ġinput Ġset ĊĠĠĠĠ Ġ* Ġis Ġmerely Ġcopied . ĠOnly Ġas Ġthe Ġpower Ġset Ġis Ġiter ated Ġare Ġthe Ġindividual Ġsub sets Ġcreated , Ġand ĊĠĠĠĠ Ġ* Ġthese Ġsub sets Ġthemselves Ġocc upy Ġonly Ġa Ġsmall Ġconstant Ġamount Ġof Ġmemory . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġset Ġthe Ġset Ġof Ġelements Ġto Ġconstruct Ġa Ġpower Ġset Ġfrom ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġpower Ġset , Ġas Ġan Ġimmutable Ġset Ġof Ġimmutable Ġsets ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` set ` Ġhas Ġmore Ġthan Ġ 3 0 Ġunique Ġelements Ġ( ca using Ġthe ĊĠĠĠĠ Ġ* Ġpower Ġset Ġsize Ġto Ġexceed Ġthe Ġ` int ` Ġrange ) ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġif Ġ` set ` Ġis Ġor Ġcontains Ġ` null ` ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Power Ġset Ġarticle Ġat ĠW ikipedia ]( http :// en . wikipedia . org / wiki / Power _ set ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 4 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ G wt Compatible ( serial izable Ġ= Ġfalse ) ĊĠĠĠ Ġfun Ġ< E > Ġpower Set ( set : ĠSet < E >): ĠSet < Set < E >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPower Set ( set ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠSub Set < E > Ġinternal Ġconstructor ( private Ġval Ġinput Set : ĠImmutableMap < E , ĠInt >, Ġprivate Ġval Ġmask : ĠInt ) Ġ: ĠAbstract Set < E >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠUn modifiable Iterator < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġelements Ġ= Ġinput Set . keys . asList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġvar Ġremaining Set Bits Ġ= Ġmask ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Next (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġremaining Set Bits Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext (): ĠE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠInteger . numberOf Trailing Z eros ( remaining Set Bits ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 3 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremaining Set Bits Ġ= Ġremaining Set Bits Ġand Ġ( 1 Ġshl Ġindex ). inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelements [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . bit Count ( mask ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġcontains ( o : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġinput Set [ o ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġindex Ġ!= Ġnull Ġ&& Ġmask Ġand Ġ( 1 Ġshl Ġindex ) Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠPower Set < E > Ġinternal Ġconstructor ( input : ĠSet < E >) Ġ: ĠAbstract Set < Set < E >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġinput Set : ĠImmutableMap < E , ĠInt > ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . input Set Ġ= ĠMaps . index Map ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Set . size Ġ<= Ġ 3 0 , Ġ" Too Ġmany Ġelements Ġto Ġcreate Ġpower Ġset : Ġ% s Ġ> Ġ 3 0 ", Ġinput Set . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 Ġshl Ġinput Set . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < Set < E >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Index edList Iterator < Set < E >>( size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( set Bits : ĠInt ): ĠSet < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSub Set ( input Set , Ġset Bits ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġcontains ( obj : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġis ĠSet <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġobj Ġas ĠSet < *> ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinput Set . keys . contains All ( set !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( obj : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġis ĠPower Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthat Ġ= Ġobj Ġas ĠPower Set < *> ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinput Set Ġ== Ġthat !!. input Set ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . equals ( obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠ Ġ* ĠThe Ġsum Ġof Ġthe Ġsums Ġof Ġthe Ġhash Ġcodes Ġin Ġeach Ġsubset Ġis Ġjust Ġthe Ġsum Ġof ĊĠĠĠĠĠĠ Ġ* Ġeach Ġinput Ġelement 's Ġhash Ġcode Ġtimes Ġthe Ġnumber Ġof Ġsets Ġthat Ġelement ĊĠĠĠĠĠĠ Ġ* Ġappears Ġin . ĠEach Ġelement Ġappears Ġin Ġexactly Ġhalf Ġof Ġthe Ġ 2 ^ n Ġsets , Ġso : ĊĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinput Set . keys . hashCode () Ġshl Ġinput Set . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" power Set ($ input Set )" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġset Ġof Ġall Ġsub sets Ġof Ġ` set ` Ġof Ġsize Ġ` size `. ĠFor Ġexample , Ġ` combin ations ( Immutable Set . of ( 1 , Ġ 2 , Ġ 3 ), Ġ 2 )` Ġreturns Ġthe Ġset Ġ` {{ 1 , Ġ 2 }, Ġ{ 1 , Ġ 3 }, Ġ{ 2 , Ġ 3 }} `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠElements Ġappear Ġin Ġthese Ġsub sets Ġin Ġthe Ġsame Ġiteration Ġorder Ġas Ġthey Ġappeared Ġin Ġthe Ġinput ĊĠĠĠĠ Ġ* Ġset . ĠThe Ġorder Ġin Ġwhich Ġthese Ġsub sets Ġappear Ġin Ġthe Ġouter Ġset Ġis Ġundefined . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġset Ġand Ġits Ġconst it uent Ġsets Ġuse Ġ` equals ` Ġto Ġdecide Ġwhether Ġtwo Ġelements ĊĠĠĠĠ Ġ* Ġare Ġidentical , Ġeven Ġif Ġthe Ġinput Ġset Ġuses Ġa Ġdifferent Ġconcept Ġof Ġe quivalence . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ* Performance Ġnotes :* Ġthe Ġmemory Ġusage Ġof Ġthe Ġreturned Ġset Ġis Ġonly Ġ` O ( n )`. ĠWhen ĊĠĠĠĠ Ġ* Ġthe Ġresult Ġset Ġis Ġconstructed , Ġthe Ġinput Ġset Ġis Ġmerely Ġcopied . ĠOnly Ġas Ġthe Ġresult Ġset Ġis ĊĠĠĠĠ Ġ* Ġiter ated Ġare Ġthe Ġindividual Ġsub sets Ġcreated . ĠEach Ġof Ġthese Ġsub sets Ġoccup ies Ġan Ġadditional ĠO ( n ) ĊĠĠĠĠ Ġ* Ġmemory Ġbut Ġonly Ġfor Ġas Ġlong Ġas Ġthe Ġuser Ġret ains Ġa Ġreference Ġto Ġit . ĠThat Ġis , Ġthe Ġset Ġreturned Ġby ĊĠĠĠĠ Ġ* Ġ` combin ations ` Ġdoes Ġnot Ġretain Ġthe Ġindividual Ġsub sets . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġset Ġthe Ġset Ġof Ġelements Ġto Ġtake Ġcombinations Ġof ĊĠĠĠĠ Ġ* Ġ@ param Ġsize Ġthe Ġnumber Ġof Ġelements Ġper Ġcombination ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġset Ġof Ġall Ġcombinations Ġof Ġ` size ` Ġelements Ġfrom Ġ` set ` ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` size ` Ġis Ġnot Ġbetween Ġ 0 Ġand Ġ` set . size ()` ĊĠĠĠĠ Ġ* Ġinclusive ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġif Ġ` set ` Ġis Ġor Ġcontains Ġ` null ` ĊĠĠĠĠ Ġ* Ġ@ since Ġ 2 3 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Beta ĊĠĠĠ Ġfun Ġ< E > Ġcombinations ( set : ĠSet < E >, Ġsize : ĠInt ): ĠSet < Set < E >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠMaps . index Map ( set ) ĊĠĠĠĠĠĠĠ Ġcheck Non negative ( size , Ġ" size ") ĊĠĠĠĠĠĠĠ Ġcheck Argument ( size Ġ<= Ġindex . size , Ġ" size Ġ(% s ) Ġmust Ġbe Ġ<= Ġset . size () Ġ(% s )", Ġsize , Ġindex . size ) ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImmutable Set . of < Set < E >>( Immutable Set . of ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( size Ġ== Ġindex . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImmutable Set . of < Set < E >>( index . keys ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Set < Set < E >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġcontains ( o : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o Ġis ĠSet <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġo Ġas ĠSet < *> ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs !!. size Ġ== Ġsize Ġ&& Ġindex . keys . contains All ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < Set < E >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Iterator < Set < E >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġbits Ġ= ĠBit Set ( index . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompute Next (): ĠSet < E >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bits . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbits . set ( 0 , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Set Bit Ġ= Ġbits . next Set Bit ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbit To Flip Ġ= Ġbits . next Clear Bit ( first Set Bit ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bit To Flip Ġ== Ġindex . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġend Of Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġcurrent Ġset Ġin Ġsorted Ġorder Ġlooks Ġlike ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ{ first Set Bit , Ġfirst Set Bit Ġ+ Ġ 1 , Ġ..., Ġbit To Flip Ġ- Ġ 1 , Ġ... } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġwhere Ġit Ġdoes Ġ* not * Ġcontain Ġbit To Flip . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġnext Ġcombination Ġis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ{ 0 , Ġ 1 , Ġ..., Ġbit To Flip Ġ- Ġfirst Set Bit Ġ- Ġ 2 , Ġbit To Flip , Ġ... } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġis Ġlex ico graph ically Ġnext Ġif Ġyou Ġlook Ġat Ġthe Ġcombinations Ġin Ġdescending Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġe . g . Ġ{ 2 , Ġ 1 , Ġ 0 }, Ġ{ 3 , Ġ 1 , Ġ 0 }, Ġ{ 3 , Ġ 2 , Ġ 0 }, Ġ{ 3 , Ġ 2 , Ġ 1 }, Ġ{ 4 , Ġ 1 , Ġ 0 } ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbits . set ( 0 , Ġbit To Flip Ġ- Ġfirst Set Bit Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbits . clear ( bit To Flip Ġ- Ġfirst Set Bit Ġ- Ġ 1 , Ġbit To Flip ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbits . set ( bit To Flip ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcopy Ġ= Ġbits . clone () Ġas ĠBit Set ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Set < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġoperator Ġfun Ġcontains ( o : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġindex [ o ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi Ġ!= Ġnull Ġ&& Ġcopy . get ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠAbstract Iterator < E >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġvar Ġi Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompute Next (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġcopy . next Set Bit ( i Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( i Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Of Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġindex . keys . asList ()[ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInt Math . bin omial ( index . size , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Sets . combin ations (" Ġ+ Ġindex . keys Ġ+ Ġ", Ġ" Ġ+ Ġsize Ġ+ Ġ")" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠAn Ġimplementation Ġfor Ġ[ Set . hashCode ]. Ġ Ġ*/ ĊĠĠĠ Ġinternal Ġfun ĠhashCode Impl ( s : ĠSet < *> ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠhashCode Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( o Ġin Ġs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhashCode Ġ+= Ġo ?. hashCode () Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠhashCode Ġ= ĠhashCode . inv (). inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠN eeded Ġto Ġdeal Ġwith Ġun usual Ġinteger Ġoverflow Ġin ĠG WT . ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠhashCode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠAn Ġimplementation Ġfor Ġ[ Set . equals ]. Ġ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġequals Impl ( s : ĠSet <* >, Ġ` object `: ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( s Ġ=== Ġ` object `) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(` object ` Ġis ĠSet <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġ` object ` Ġas ĠSet < *> ? ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs . size Ġ== Ġo !!. size Ġ&& Ġs . contains All ( o ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġun modifiable Ġview Ġof Ġthe Ġspecified Ġnavig able Ġset . ĠThis Ġmethod Ġallows Ġmodules Ġto ĊĠĠĠĠ Ġ* Ġprovide Ġusers Ġwith Ġ" read - only " Ġaccess Ġto Ġinternal Ġnavig able Ġsets . ĠQuery Ġoperations Ġon Ġthe ĊĠĠĠĠ Ġ* Ġreturned Ġset Ġ" read Ġthrough " Ġto Ġthe Ġspecified Ġset , Ġand Ġattempts Ġto Ġmodify Ġthe Ġreturned Ġset , ĊĠĠĠĠ Ġ* Ġwhether Ġdirect Ġor Ġvia Ġits Ġcollection Ġviews , Ġresult Ġin Ġan Ġ` Unsupported OperationException `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġnavig able Ġset Ġwill Ġbe Ġserial izable Ġif Ġthe Ġspecified Ġnavig able Ġset Ġis ĊĠĠĠĠ Ġ* Ġserial izable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġset Ġthe Ġnavig able Ġset Ġfor Ġwhich Ġan Ġun modifiable Ġview Ġis Ġto Ġbe Ġreturned ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġun modifiable Ġview Ġof Ġthe Ġspecified Ġnavig able Ġset ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 2 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< E > Ġun modifiable Navig able Set ( set : ĠNavig able Set < E >): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( set Ġis ĠImmutable Collection < *> Ġ|| Ġset Ġis ĠUn modifiable Navig able Set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠUn modifiable Navig able Set ( set ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠUn modifiable Navig able Set < E >( delegate : ĠNavig able Set < E >) Ġ: ĠForward ing Sorted Set < E >(), ĠNavig able Set < E >, ĠSerializable Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdelegate : ĠNavig able Set < E > ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġun modifiable Delegate : ĠSorted Set < E > ĊĊĊĠĠĠĠĠĠĠ Ġ@ Transient ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdescending Set : ĠUn modifiable Navig able Set < E >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . delegate Ġ= ĠcheckNotNull ( delegate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . unmodifiable Delegate Ġ= ĠCollections . unmodifiable Sorted Set ( delegate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelegate (): ĠSorted Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġun modifiable Delegate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġdefault Ġmethods Ġnot Ġforwarded Ġby ĠForward ing Sorted Set ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove If ( filter : Ġjava . util . function . Predicate < in ĠE >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstream (): ĠStream < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate . stream () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparallel Stream (): ĠStream < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate . parallel Stream () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠforEach ( action : ĠConsumer < in ĠE >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . forEach ( action ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlower ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate . lower ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfloor ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate . floor ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġce iling ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate . ce iling ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhigher ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate . high er ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpoll First (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpoll Last (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescending Set (): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġdescending Set ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescending Set Ġ= ĠUn modifiable Navig able Set ( delegate . desc ending Set ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġdescending Set ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult !!. desc ending Set Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescending Iterator (): ĠIterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIter ators . unmodifiable Iterator ( delegate . desc ending Iterator ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsub Set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Element : ĠE , Ġfrom Inclusive : ĠBoolean , Ġto Element : ĠE , Ġto Inclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġun modifiable Navig able Set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . sub Set ( from Element , Ġfrom Inclusive , Ġto Element , Ġto Inclusive )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhead Set ( to Element : ĠE , Ġinclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġun modifiable Navig able Set ( delegate . head Set ( to Element , Ġinclusive )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtail Set ( from Element : ĠE , Ġinclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġun modifiable Navig able Set ( delegate . tail Set ( from Element , Ġinclusive )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠserialVersionUID : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġsynchronized Ġ( thread - safe ) Ġnavig able Ġset Ġbacked Ġby Ġthe Ġspecified Ġnavig able Ġset . ĠIn ĊĠĠĠĠ Ġ* Ġorder Ġto Ġguarantee Ġserial Ġaccess , Ġit Ġis Ġcritical Ġthat Ġ** all ** Ġaccess Ġto Ġthe Ġbacking ĊĠĠĠĠ Ġ* Ġnavig able Ġset Ġis Ġaccomp lished Ġthrough Ġthe Ġreturned Ġnavig able Ġset Ġ( or Ġits Ġviews ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġis Ġimper ative Ġthat Ġthe Ġuser Ġmanually Ġsynchronize Ġon Ġthe Ġreturned Ġsorted Ġset Ġwhen ĊĠĠĠĠ Ġ* Ġiter ating Ġover Ġit Ġor Ġany Ġof Ġits Ġ` desc ending Set `, Ġ` sub Set `, Ġ` head Set `, Ġor ĊĠĠĠĠ Ġ* Ġ` tail Set ` Ġviews . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< pre >` Navig able Set < E > Ġset Ġ= Ġsynchronized Navig able Set ( new ĠTree Set < E >()); ĊĠĠĠĠ Ġ* Ġ... ĊĠĠĠĠ Ġ* Ġsynchronized Ġ( set ) Ġ{ ĊĠĠĠĠ Ġ* Ġ// ĠMust Ġbe Ġin Ġthe Ġsynchronized Ġblock ĊĠĠĠĠ Ġ* ĠIterator < E > Ġit Ġ= Ġset . iterator (); ĊĠĠĠĠ Ġ* Ġwhile Ġ( it . hasNext ()) Ġ{ ĊĠĠĠĠ Ġ* Ġfoo ( it . next ()); ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠ Ġ` </ pre > Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġor : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< pre >` Navig able Set < E > Ġset Ġ= Ġsynchronized Navig able Set ( new ĠTree Set < E >()); ĊĠĠĠĠ Ġ* ĠNavig able Set < E > Ġset 2 Ġ= Ġset . desc ending Set (). head Set ( foo ); ĊĠĠĠĠ Ġ* Ġ... ĊĠĠĠĠ Ġ* Ġsynchronized Ġ( set ) Ġ{ Ġ// ĠNote : Ġset , Ġnot Ġset 2 !!! ĊĠĠĠĠ Ġ* Ġ// ĠMust Ġbe Ġin Ġthe Ġsynchronized Ġblock ĊĠĠĠĠ Ġ* ĠIterator < E > Ġit Ġ= Ġset 2 . desc ending Iterator (); ĊĠĠĠĠ Ġ* Ġwhile Ġ( it . hasNext ()) ĊĠĠĠĠ Ġ* Ġfoo ( it . next ()); ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠ Ġ` Ġ* ĊĠĠĠĠ Ġ* Ġ}</ pre > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFailure Ġto Ġfollow Ġthis Ġadvice Ġmay Ġresult Ġin Ġnon - determin istic Ġbehavior . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġnavig able Ġset Ġwill Ġbe Ġserial izable Ġif Ġthe Ġspecified Ġnavig able Ġset Ġis ĊĠĠĠĠ Ġ* Ġserial izable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnavig able Set Ġthe Ġnavig able Ġset Ġto Ġbe Ġ" wrapped " Ġin Ġa Ġsynchronized Ġnavig able Ġset . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġsynchronized Ġview Ġof Ġthe Ġspecified Ġnavig able Ġset . ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 3 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ G wt In compatible Ġ// ĠNavig able Set ĊĠĠĠ Ġfun Ġ< E > Ġsynchronized Navig able Set ( navig able Set : ĠNavig able Set < E >): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSynchron ized . navig able Set ( navig able Set ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠRemove Ġeach Ġelement Ġin Ġan Ġiterable Ġfrom Ġa Ġset . Ġ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġremove All Impl ( set : ĠMutable Set <* >, Ġiterator : ĠIterator < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġchanged Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġchanged Ġor Ġset . remove ( iterator . next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġchanged ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġremove All Impl ( set : ĠMutable Set <* >, Ġcollection : ĠCollection < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcollection Ġ= Ġcollection ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( collection ) Ġ// Ġfor ĠG WT ĊĠĠĠĠĠĠĠ Ġif Ġ( collection Ġis ĠMulti set <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Ġ= Ġcollection . element Set () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠAbstract Set . removeAll ( List ) Ġhas Ġquadr atic Ġbehavior Ġif Ġthe Ġlist Ġsize ĊĠĠĠĠ Ġ* Ġis Ġjust Ġmore Ġthan Ġthe Ġset 's Ġsize . Ġ ĠWe Ġaugment Ġthe Ġtest Ġby ĊĠĠĠĠ Ġ* Ġassuming Ġthat Ġsets Ġhave Ġfast Ġcontains () Ġperformance , Ġand Ġother ĊĠĠĠĠ Ġ* Ġcollections Ġdon 't . Ġ ĠSee ĊĠĠĠĠ Ġ* Ġhttp :// code . google . com / p / gu ava - libraries / issues / detail ? id = 1 0 1 3 ĊĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( collection Ġis ĠSet < *> Ġ&& Ġcollection . size Ġ> Ġset . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIter ators . removeAll ( set . iterator (), Ġcollection ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove All Impl ( set , Ġcollection . iterator ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ G wt In compatible Ġ// ĠNavig able Set ĊĠĠĠ Ġinternal Ġopen Ġclass ĠDesc ending Set < E >( private Ġval Ġforward : ĠNavig able Set < E >) Ġ: ĠForward ing Navig able Set < E >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelegate (): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlower ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . high er ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfloor ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . ce iling ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġce iling ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . floor ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhigher ( e : ĠE ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . lower ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpoll First (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . poll Last () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpoll Last (): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . poll First () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescending Set (): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdescending Iterator (): ĠIterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . iterator () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsub Set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Element : ĠE , Ġfrom Inclusive : ĠBoolean , Ġto Element : ĠE , Ġto Inclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . sub Set ( to Element , Ġto Inclusive , Ġfrom Element , Ġfrom Inclusive ). desc ending Set () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsub Set ( from Element : ĠE , Ġto Element : ĠE ): ĠSorted Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstandard Sub Set ( from Element , Ġto Element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhead Set ( to Element : ĠE , Ġinclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . tail Set ( to Element , Ġinclusive ). desc ending Set () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhead Set ( to Element : ĠE ): ĠSorted Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstandard Head Set ( to Element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtail Set ( from Element : ĠE , Ġinclusive : ĠBoolean ): ĠNavig able Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . head Set ( from Element , Ġinclusive ). desc ending Set () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtail Set ( from Element : ĠE ): ĠSorted Set < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstandard Tail Set ( from Element ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcomparator (): ĠComparator < in ĠE >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġforward Comparator Ġ= Ġforward . comparator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( forward Comparator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOrdering . natural < Comparable >(). reverse < Comparable >() Ġas ĠComparator < *> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreverse < in ĠE >( forward Comparator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġinline Ġthis , Ġwe Ġget Ġa Ġjav ac Ġerror . ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ< T > Ġreverse ( forward : ĠComparator < T >): ĠOrdering < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOrdering . from ( forward ). reverse () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfirst (): ĠE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . last () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlast (): ĠE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . first () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġforward . desc ending Iterator () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Array (): ĠArray < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstandard ToArray () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T > Ġto Array ( array : ĠArray < T >): ĠArray < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstandard ToArray ( array ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstandard ToString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġview Ġof Ġthe Ġportion Ġof Ġ` set ` Ġwhose Ġelements Ġare Ġcontained Ġby Ġ` range `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġdeleg ates Ġto Ġthe Ġappropriate Ġmethods Ġof Ġ[ Navig able Set ] Ġ( name ly Ġ[ Ġ][ Navig able Set . sub Set ], Ġ[ Ġ][ Navig able Set . tail Set ], Ġand Ġ[ head Set () ][ Navig able Set . head Set ]) Ġto Ġactually Ġconstruct Ġthe Ġview . ĠConsult Ġthese Ġmethods Ġfor Ġa Ġfull ĊĠĠĠĠ Ġ* Ġdescription Ġof Ġthe Ġreturned Ġview 's Ġbehavior . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Warning :** Ġ` Range ` s Ġalways Ġrepresent Ġa Ġrange Ġof Ġvalues Ġusing Ġthe Ġvalues ' Ġnatural ĊĠĠĠĠ Ġ* Ġordering . Ġ` Navig able Set ` Ġon Ġthe Ġother Ġhand Ġcan Ġspecify Ġa Ġcustom Ġordering Ġvia Ġa Ġ[ Ġ], Ġwhich Ġcan Ġvi olate Ġthe Ġnatural Ġordering . ĠUsing Ġthis Ġmethod Ġ( or Ġin Ġgeneral Ġusing ĊĠĠĠĠ Ġ* Ġ` Range `) Ġwith Ġun natur ally - ordered Ġsets Ġcan Ġlead Ġto Ġunexpected Ġand Ġundefined Ġbehavior . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 2 0 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Beta ĊĠĠĠ Ġ@ G wt In compatible Ġ// ĠNavig able Set ĊĠĠĠ Ġfun Ġ< K Ġ: ĠComparable < K >> Ġsub Set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset : ĠNavig able Set < K >, Ġrange : ĠRange < K >): ĠNavig able Set < K > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( set . comparator () Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġset . comparator () Ġ!== ĠOrdering . natural < Comparable >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġrange . has Lower Bound () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġrange . has Upper Bound ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Argument ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . comparator () !!. compare ( range . lower Endpoint (), Ġrange . upper Endpoint ()) Ġ<= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġis Ġusing Ġa Ġcustom Ġcomparator Ġwhich Ġis Ġinconsistent Ġwith Ġthe Ġnatural Ġordering .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( range . has Lower Bound () Ġ&& Ġrange . has Upper Bound ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset . sub Set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange . lower Endpoint (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange . lower Bound Type () Ġ== ĠBound Type . CLOSED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange . upper Endpoint (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange . upper Bound Type () Ġ== ĠBound Type . CLOSED ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( range . has Lower Bound ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset . tail Set ( range . lower Endpoint (), Ġrange . lower Bound Type () Ġ== ĠBound Type . CLOSED ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( range . has Upper Bound ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset . head Set ( range . upper Endpoint (), Ġrange . upper Bound Type () Ġ== ĠBound Type . CLOSED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠcheckNotNull ( set ) ĊĠĠĠ Ġ} Ċ } Ċ