1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <!--NewPage--> 3 <HTML> 4 <HEAD> 5 <!-- Generated by javadoc (build 1.6.0-google-internal) on Mon Jan 04 20:47:59 PST 2010 --> 6 <TITLE> 7 Multimaps (Guava Libraries 2010.01.04) 8 </TITLE> 9 10 <META NAME="date" CONTENT="2010-01-04"> 11 12 <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> 13 14 <SCRIPT type="text/javascript"> 15 function windowTitle() 16 { 17 if (location.href.indexOf('is-external=true') == -1) { 18 parent.document.title="Multimaps (Guava Libraries 2010.01.04)"; 19 } 20 } 21 </SCRIPT> 22 <NOSCRIPT> 23 </NOSCRIPT> 24 25 </HEAD> 26 27 <BODY BGCOLOR="white" onload="windowTitle();"> 28 <HR> 29 30 31 <!-- ========= START OF TOP NAVBAR ======= --> 32 <A NAME="navbar_top"><!-- --></A> 33 <A HREF="#skip-navbar_top" title="Skip navigation links"></A> 34 <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 35 <TR> 36 <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 37 <A NAME="navbar_top_firstrow"><!-- --></A> 38 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 39 <TR ALIGN="center" VALIGN="top"> 40 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> 41 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> 42 <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> 43 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Multimaps.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD> 44 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> 45 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> 46 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> 47 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> 48 </TR> 49 </TABLE> 50 </TD> 51 <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 52 </EM> 53 </TD> 54 </TR> 55 56 <TR> 57 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 58 <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect"><B>PREV CLASS</B></A> 59 <A HREF="../../../../com/google/common/collect/Multiset.html" title="interface in com.google.common.collect"><B>NEXT CLASS</B></A></FONT></TD> 60 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 61 <A HREF="../../../../index.html?com/google/common/collect/Multimaps.html" target="_top"><B>FRAMES</B></A> 62 <A HREF="Multimaps.html" target="_top"><B>NO FRAMES</B></A> 63 <SCRIPT type="text/javascript"> 64 <!-- 65 if(window==top) { 66 document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); 67 } 68 //--> 69 </SCRIPT> 70 <NOSCRIPT> 71 <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> 72 </NOSCRIPT> 73 74 75 </FONT></TD> 76 </TR> 77 <TR> 78 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 79 SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> 80 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 81 DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> 82 </TR> 83 </TABLE> 84 <A NAME="skip-navbar_top"></A> 85 <!-- ========= END OF TOP NAVBAR ========= --> 86 87 <HR> 88 <!-- ======== START OF CLASS DATA ======== --> 89 <H2> 90 <FONT SIZE="-1"> 91 com.google.common.collect</FONT> 92 <BR> 93 Class Multimaps</H2> 94 <PRE> 95 <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A> 96 <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.google.common.collect.Multimaps</B> 97 </PRE> 98 <HR> 99 <DL> 100 <DT><PRE>public final class <B>Multimaps</B><DT>extends <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></DL> 101 </PRE> 102 103 <P> 104 Provides static methods acting on or generating a <code>Multimap</code>. 105 <P> 106 107 <P> 108 <DL> 109 <DT><B>Since:</B></DT> 110 <DD>2010.01.04 <b>stable</b> (imported from Google Collections Library)</DD> 111 <DT><B>Author:</B></DT> 112 <DD>Jared Levy, Robert Konigsberg, Mike Bostock</DD> 113 </DL> 114 <HR> 115 116 <P> 117 118 <!-- ========== METHOD SUMMARY =========== --> 119 120 <A NAME="method_summary"><!-- --></A> 121 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 122 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 123 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> 124 <B>Method Summary</B></FONT></TH> 125 </TR> 126 <TR BGCOLOR="white" CLASS="TableRowColor"> 127 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 128 <CODE>static 129 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 130 <TR ALIGN="right" VALIGN=""> 131 <TD NOWRAP><FONT SIZE="-1"> 132 <CODE><K,V> <A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V></CODE></FONT></TD> 133 </TR> 134 </TABLE> 135 </CODE></FONT></TD> 136 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#forMap(java.util.Map)">forMap</A></B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,V> map)</CODE> 137 138 <BR> 139 Returns a multimap view of the specified map.</TD> 140 </TR> 141 <TR BGCOLOR="white" CLASS="TableRowColor"> 142 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 143 <CODE>static 144 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 145 <TR ALIGN="right" VALIGN=""> 146 <TD NOWRAP><FONT SIZE="-1"> 147 <CODE><K,V> <A HREF="../../../../com/google/common/collect/ImmutableListMultimap.html" title="class in com.google.common.collect">ImmutableListMultimap</A><K,V></CODE></FONT></TD> 148 </TR> 149 </TABLE> 150 </CODE></FONT></TD> 151 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#index(java.lang.Iterable, com.google.common.base.Function)">index</A></B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</A><V> values, 152 <A HREF="../../../../com/google/common/base/Function.html" title="interface in com.google.common.base">Function</A><? super V,K> keyFunction)</CODE> 153 154 <BR> 155 Creates an index <code>ImmutableMultimap</code> that contains the results of 156 applying a specified function to each item in an <code>Iterable</code> of 157 values.</TD> 158 </TR> 159 <TR BGCOLOR="white" CLASS="TableRowColor"> 160 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 161 <CODE>static 162 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 163 <TR ALIGN="right" VALIGN=""> 164 <TD NOWRAP><FONT SIZE="-1"> 165 <CODE><K,V,M extends <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V>> 166 <BR> 167 M</CODE></FONT></TD> 168 </TR> 169 </TABLE> 170 </CODE></FONT></TD> 171 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#invertFrom(com.google.common.collect.Multimap, M)">invertFrom</A></B>(<A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><? extends V,? extends K> source, 172 M dest)</CODE> 173 174 <BR> 175 Copies each key-value mapping in <code>source</code> into <code>dest</code>, with 176 its key and value reversed.</TD> 177 </TR> 178 <TR BGCOLOR="white" CLASS="TableRowColor"> 179 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 180 <CODE>static 181 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 182 <TR ALIGN="right" VALIGN=""> 183 <TD NOWRAP><FONT SIZE="-1"> 184 <CODE><K,V> <A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V></CODE></FONT></TD> 185 </TR> 186 </TABLE> 187 </CODE></FONT></TD> 188 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#newListMultimap(java.util.Map, com.google.common.base.Supplier)">newListMultimap</A></B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> map, 189 <A HREF="../../../../com/google/common/base/Supplier.html" title="interface in com.google.common.base">Supplier</A><? extends <A HREF="http://java.sun.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A><V>> factory)</CODE> 190 191 <BR> 192 Creates a new <code>ListMultimap</code> that uses the provided map and factory.</TD> 193 </TR> 194 <TR BGCOLOR="white" CLASS="TableRowColor"> 195 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 196 <CODE>static 197 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 198 <TR ALIGN="right" VALIGN=""> 199 <TD NOWRAP><FONT SIZE="-1"> 200 <CODE><K,V> <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V></CODE></FONT></TD> 201 </TR> 202 </TABLE> 203 </CODE></FONT></TD> 204 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#newMultimap(java.util.Map, com.google.common.base.Supplier)">newMultimap</A></B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> map, 205 <A HREF="../../../../com/google/common/base/Supplier.html" title="interface in com.google.common.base">Supplier</A><? extends <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> factory)</CODE> 206 207 <BR> 208 Creates a new <code>Multimap</code> that uses the provided map and factory.</TD> 209 </TR> 210 <TR BGCOLOR="white" CLASS="TableRowColor"> 211 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 212 <CODE>static 213 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 214 <TR ALIGN="right" VALIGN=""> 215 <TD NOWRAP><FONT SIZE="-1"> 216 <CODE><K,V> <A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V></CODE></FONT></TD> 217 </TR> 218 </TABLE> 219 </CODE></FONT></TD> 220 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#newSetMultimap(java.util.Map, com.google.common.base.Supplier)">newSetMultimap</A></B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> map, 221 <A HREF="../../../../com/google/common/base/Supplier.html" title="interface in com.google.common.base">Supplier</A><? extends <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</A><V>> factory)</CODE> 222 223 <BR> 224 Creates a new <code>SetMultimap</code> that uses the provided map and factory.</TD> 225 </TR> 226 <TR BGCOLOR="white" CLASS="TableRowColor"> 227 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 228 <CODE>static 229 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 230 <TR ALIGN="right" VALIGN=""> 231 <TD NOWRAP><FONT SIZE="-1"> 232 <CODE><K,V> <A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V></CODE></FONT></TD> 233 </TR> 234 </TABLE> 235 </CODE></FONT></TD> 236 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#newSortedSetMultimap(java.util.Map, com.google.common.base.Supplier)">newSortedSetMultimap</A></B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> map, 237 <A HREF="../../../../com/google/common/base/Supplier.html" title="interface in com.google.common.base">Supplier</A><? extends <A HREF="http://java.sun.com/javase/6/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</A><V>> factory)</CODE> 238 239 <BR> 240 Creates a new <code>SortedSetMultimap</code> that uses the provided map and 241 factory.</TD> 242 </TR> 243 <TR BGCOLOR="white" CLASS="TableRowColor"> 244 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 245 <CODE>static 246 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 247 <TR ALIGN="right" VALIGN=""> 248 <TD NOWRAP><FONT SIZE="-1"> 249 <CODE><K,V> <A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V></CODE></FONT></TD> 250 </TR> 251 </TABLE> 252 </CODE></FONT></TD> 253 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedListMultimap(com.google.common.collect.ListMultimap)">synchronizedListMultimap</A></B>(<A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V> multimap)</CODE> 254 255 <BR> 256 Returns a synchronized (thread-safe) <code>ListMultimap</code> backed by the 257 specified multimap.</TD> 258 </TR> 259 <TR BGCOLOR="white" CLASS="TableRowColor"> 260 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 261 <CODE>static 262 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 263 <TR ALIGN="right" VALIGN=""> 264 <TD NOWRAP><FONT SIZE="-1"> 265 <CODE><K,V> <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V></CODE></FONT></TD> 266 </TR> 267 </TABLE> 268 </CODE></FONT></TD> 269 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedMultimap(com.google.common.collect.Multimap)">synchronizedMultimap</A></B>(<A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V> multimap)</CODE> 270 271 <BR> 272 Returns a synchronized (thread-safe) multimap backed by the specified 273 multimap.</TD> 274 </TR> 275 <TR BGCOLOR="white" CLASS="TableRowColor"> 276 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 277 <CODE>static 278 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 279 <TR ALIGN="right" VALIGN=""> 280 <TD NOWRAP><FONT SIZE="-1"> 281 <CODE><K,V> <A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V></CODE></FONT></TD> 282 </TR> 283 </TABLE> 284 </CODE></FONT></TD> 285 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedSetMultimap(com.google.common.collect.SetMultimap)">synchronizedSetMultimap</A></B>(<A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V> multimap)</CODE> 286 287 <BR> 288 Returns a synchronized (thread-safe) <code>SetMultimap</code> backed by the 289 specified multimap.</TD> 290 </TR> 291 <TR BGCOLOR="white" CLASS="TableRowColor"> 292 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 293 <CODE>static 294 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 295 <TR ALIGN="right" VALIGN=""> 296 <TD NOWRAP><FONT SIZE="-1"> 297 <CODE><K,V> <A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V></CODE></FONT></TD> 298 </TR> 299 </TABLE> 300 </CODE></FONT></TD> 301 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedSortedSetMultimap(com.google.common.collect.SortedSetMultimap)">synchronizedSortedSetMultimap</A></B>(<A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V> multimap)</CODE> 302 303 <BR> 304 Returns a synchronized (thread-safe) <code>SortedSetMultimap</code> backed by 305 the specified multimap.</TD> 306 </TR> 307 <TR BGCOLOR="white" CLASS="TableRowColor"> 308 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 309 <CODE>static 310 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 311 <TR ALIGN="right" VALIGN=""> 312 <TD NOWRAP><FONT SIZE="-1"> 313 <CODE><K,V> <A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V></CODE></FONT></TD> 314 </TR> 315 </TABLE> 316 </CODE></FONT></TD> 317 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#unmodifiableListMultimap(com.google.common.collect.ListMultimap)">unmodifiableListMultimap</A></B>(<A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V> delegate)</CODE> 318 319 <BR> 320 Returns an unmodifiable view of the specified <code>ListMultimap</code>.</TD> 321 </TR> 322 <TR BGCOLOR="white" CLASS="TableRowColor"> 323 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 324 <CODE>static 325 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 326 <TR ALIGN="right" VALIGN=""> 327 <TD NOWRAP><FONT SIZE="-1"> 328 <CODE><K,V> <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V></CODE></FONT></TD> 329 </TR> 330 </TABLE> 331 </CODE></FONT></TD> 332 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#unmodifiableMultimap(com.google.common.collect.Multimap)">unmodifiableMultimap</A></B>(<A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V> delegate)</CODE> 333 334 <BR> 335 Returns an unmodifiable view of the specified multimap.</TD> 336 </TR> 337 <TR BGCOLOR="white" CLASS="TableRowColor"> 338 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 339 <CODE>static 340 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 341 <TR ALIGN="right" VALIGN=""> 342 <TD NOWRAP><FONT SIZE="-1"> 343 <CODE><K,V> <A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V></CODE></FONT></TD> 344 </TR> 345 </TABLE> 346 </CODE></FONT></TD> 347 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#unmodifiableSetMultimap(com.google.common.collect.SetMultimap)">unmodifiableSetMultimap</A></B>(<A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V> delegate)</CODE> 348 349 <BR> 350 Returns an unmodifiable view of the specified <code>SetMultimap</code>.</TD> 351 </TR> 352 <TR BGCOLOR="white" CLASS="TableRowColor"> 353 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 354 <CODE>static 355 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> 356 <TR ALIGN="right" VALIGN=""> 357 <TD NOWRAP><FONT SIZE="-1"> 358 <CODE><K,V> <A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V></CODE></FONT></TD> 359 </TR> 360 </TABLE> 361 </CODE></FONT></TD> 362 <TD><CODE><B><A HREF="../../../../com/google/common/collect/Multimaps.html#unmodifiableSortedSetMultimap(com.google.common.collect.SortedSetMultimap)">unmodifiableSortedSetMultimap</A></B>(<A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V> delegate)</CODE> 363 364 <BR> 365 Returns an unmodifiable view of the specified <code>SortedSetMultimap</code>.</TD> 366 </TR> 367 </TABLE> 368 <A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A> 369 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 370 <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor"> 371 <TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH> 372 </TR> 373 <TR BGCOLOR="white" CLASS="TableRowColor"> 374 <TD><CODE><A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD> 375 </TR> 376 </TABLE> 377 378 <P> 379 380 <!-- ============ METHOD DETAIL ========== --> 381 382 <A NAME="method_detail"><!-- --></A> 383 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 384 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 385 <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> 386 <B>Method Detail</B></FONT></TH> 387 </TR> 388 </TABLE> 389 390 <A NAME="newMultimap(java.util.Map, com.google.common.base.Supplier)"><!-- --></A><H3> 391 newMultimap</H3> 392 <PRE> 393 public static <K,V> <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V> <B>newMultimap</B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> map, 394 <A HREF="../../../../com/google/common/base/Supplier.html" title="interface in com.google.common.base">Supplier</A><? extends <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> factory)</PRE> 395 <DL> 396 <DD>Creates a new <code>Multimap</code> that uses the provided map and factory. It 397 can generate a multimap based on arbitrary <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><CODE>Map</CODE></A> and 398 <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util"><CODE>Collection</CODE></A> classes. 399 400 <p>The <code>factory</code>-generated and <code>map</code> classes determine the 401 multimap iteration order. They also specify the behavior of the 402 <code>equals</code>, <code>hashCode</code>, and <code>toString</code> methods for the 403 multimap and its returned views. However, the multimap's <code>get</code> 404 method returns instances of a different class than <code>factory.get()</code> 405 does. 406 407 <p>The multimap is serializable if <code>map</code>, <code>factory</code>, the 408 collections generated by <code>factory</code>, and the multimap contents are all 409 serializable. 410 411 <p>The multimap is not threadsafe when any concurrent operations update the 412 multimap, even if <code>map</code> and the instances generated by 413 <code>factory</code> are. Concurrent read operations will work correctly. To 414 allow concurrent update operations, wrap the multimap with a call to 415 <A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedMultimap(com.google.common.collect.Multimap)"><CODE>synchronizedMultimap(com.google.common.collect.Multimap<K, V>)</CODE></A>. 416 417 <p>Call this method only when the simpler methods 418 <A HREF="../../../../com/google/common/collect/ArrayListMultimap.html#create()"><CODE>ArrayListMultimap.create()</CODE></A>, <A HREF="../../../../com/google/common/collect/HashMultimap.html#create()"><CODE>HashMultimap.create()</CODE></A>, 419 <A HREF="../../../../com/google/common/collect/LinkedHashMultimap.html#create()"><CODE>LinkedHashMultimap.create()</CODE></A>, <A HREF="../../../../com/google/common/collect/LinkedListMultimap.html#create()"><CODE>LinkedListMultimap.create()</CODE></A>, 420 <A HREF="../../../../com/google/common/collect/TreeMultimap.html#create()"><CODE>TreeMultimap.create()</CODE></A>, and 421 <A HREF="../../../../com/google/common/collect/TreeMultimap.html#create(java.util.Comparator, java.util.Comparator)"><CODE>TreeMultimap.create(Comparator, Comparator)</CODE></A> won't suffice. 422 423 <p>Note: the multimap assumes complete ownership over of <code>map</code> and 424 the collections returned by <code>factory</code>. Those objects should not be 425 manually updated and they should not use soft, weak, or phantom references. 426 <P> 427 <DD><DL> 428 <DT><B>Parameters:</B><DD><CODE>map</CODE> - place to store the mapping from each key to its corresponding 429 values<DD><CODE>factory</CODE> - supplier of new, empty collections that will each hold all 430 values for a given key 431 <DT><B>Throws:</B> 432 <DD><CODE><A HREF="http://java.sun.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if <code>map</code> is not empty</DL> 433 </DD> 434 </DL> 435 <HR> 436 437 <A NAME="newListMultimap(java.util.Map, com.google.common.base.Supplier)"><!-- --></A><H3> 438 newListMultimap</H3> 439 <PRE> 440 public static <K,V> <A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V> <B>newListMultimap</B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> map, 441 <A HREF="../../../../com/google/common/base/Supplier.html" title="interface in com.google.common.base">Supplier</A><? extends <A HREF="http://java.sun.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</A><V>> factory)</PRE> 442 <DL> 443 <DD>Creates a new <code>ListMultimap</code> that uses the provided map and factory. 444 It can generate a multimap based on arbitrary <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><CODE>Map</CODE></A> and <A HREF="http://java.sun.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util"><CODE>List</CODE></A> 445 classes. 446 447 <p>The <code>factory</code>-generated and <code>map</code> classes determine the 448 multimap iteration order. They also specify the behavior of the 449 <code>equals</code>, <code>hashCode</code>, and <code>toString</code> methods for the 450 multimap and its returned views. The multimap's <code>get</code>, <code>removeAll</code>, and <code>replaceValues</code> methods return <code>RandomAccess</code> 451 lists if the factory does. However, the multimap's <code>get</code> method 452 returns instances of a different class than does <code>factory.get()</code>. 453 454 <p>The multimap is serializable if <code>map</code>, <code>factory</code>, the 455 lists generated by <code>factory</code>, and the multimap contents are all 456 serializable. 457 458 <p>The multimap is not threadsafe when any concurrent operations update the 459 multimap, even if <code>map</code> and the instances generated by 460 <code>factory</code> are. Concurrent read operations will work correctly. To 461 allow concurrent update operations, wrap the multimap with a call to 462 <A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedListMultimap(com.google.common.collect.ListMultimap)"><CODE>synchronizedListMultimap(com.google.common.collect.ListMultimap<K, V>)</CODE></A>. 463 464 <p>Call this method only when the simpler methods 465 <A HREF="../../../../com/google/common/collect/ArrayListMultimap.html#create()"><CODE>ArrayListMultimap.create()</CODE></A> and <A HREF="../../../../com/google/common/collect/LinkedListMultimap.html#create()"><CODE>LinkedListMultimap.create()</CODE></A> 466 won't suffice. 467 468 <p>Note: the multimap assumes complete ownership over of <code>map</code> and 469 the lists returned by <code>factory</code>. Those objects should not be manually 470 updated and they should not use soft, weak, or phantom references. 471 <P> 472 <DD><DL> 473 <DT><B>Parameters:</B><DD><CODE>map</CODE> - place to store the mapping from each key to its corresponding 474 values<DD><CODE>factory</CODE> - supplier of new, empty lists that will each hold all values 475 for a given key 476 <DT><B>Throws:</B> 477 <DD><CODE><A HREF="http://java.sun.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if <code>map</code> is not empty</DL> 478 </DD> 479 </DL> 480 <HR> 481 482 <A NAME="newSetMultimap(java.util.Map, com.google.common.base.Supplier)"><!-- --></A><H3> 483 newSetMultimap</H3> 484 <PRE> 485 public static <K,V> <A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V> <B>newSetMultimap</B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> map, 486 <A HREF="../../../../com/google/common/base/Supplier.html" title="interface in com.google.common.base">Supplier</A><? extends <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</A><V>> factory)</PRE> 487 <DL> 488 <DD>Creates a new <code>SetMultimap</code> that uses the provided map and factory. 489 It can generate a multimap based on arbitrary <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><CODE>Map</CODE></A> and <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util"><CODE>Set</CODE></A> 490 classes. 491 492 <p>The <code>factory</code>-generated and <code>map</code> classes determine the 493 multimap iteration order. They also specify the behavior of the 494 <code>equals</code>, <code>hashCode</code>, and <code>toString</code> methods for the 495 multimap and its returned views. However, the multimap's <code>get</code> 496 method returns instances of a different class than <code>factory.get()</code> 497 does. 498 499 <p>The multimap is serializable if <code>map</code>, <code>factory</code>, the 500 sets generated by <code>factory</code>, and the multimap contents are all 501 serializable. 502 503 <p>The multimap is not threadsafe when any concurrent operations update the 504 multimap, even if <code>map</code> and the instances generated by 505 <code>factory</code> are. Concurrent read operations will work correctly. To 506 allow concurrent update operations, wrap the multimap with a call to 507 <A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedSetMultimap(com.google.common.collect.SetMultimap)"><CODE>synchronizedSetMultimap(com.google.common.collect.SetMultimap<K, V>)</CODE></A>. 508 509 <p>Call this method only when the simpler methods 510 <A HREF="../../../../com/google/common/collect/HashMultimap.html#create()"><CODE>HashMultimap.create()</CODE></A>, <A HREF="../../../../com/google/common/collect/LinkedHashMultimap.html#create()"><CODE>LinkedHashMultimap.create()</CODE></A>, 511 <A HREF="../../../../com/google/common/collect/TreeMultimap.html#create()"><CODE>TreeMultimap.create()</CODE></A>, and 512 <A HREF="../../../../com/google/common/collect/TreeMultimap.html#create(java.util.Comparator, java.util.Comparator)"><CODE>TreeMultimap.create(Comparator, Comparator)</CODE></A> won't suffice. 513 514 <p>Note: the multimap assumes complete ownership over of <code>map</code> and 515 the sets returned by <code>factory</code>. Those objects should not be manually 516 updated and they should not use soft, weak, or phantom references. 517 <P> 518 <DD><DL> 519 <DT><B>Parameters:</B><DD><CODE>map</CODE> - place to store the mapping from each key to its corresponding 520 values<DD><CODE>factory</CODE> - supplier of new, empty sets that will each hold all values 521 for a given key 522 <DT><B>Throws:</B> 523 <DD><CODE><A HREF="http://java.sun.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if <code>map</code> is not empty</DL> 524 </DD> 525 </DL> 526 <HR> 527 528 <A NAME="newSortedSetMultimap(java.util.Map, com.google.common.base.Supplier)"><!-- --></A><H3> 529 newSortedSetMultimap</H3> 530 <PRE> 531 public static <K,V> <A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V> <B>newSortedSetMultimap</B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</A><V>> map, 532 <A HREF="../../../../com/google/common/base/Supplier.html" title="interface in com.google.common.base">Supplier</A><? extends <A HREF="http://java.sun.com/javase/6/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</A><V>> factory)</PRE> 533 <DL> 534 <DD>Creates a new <code>SortedSetMultimap</code> that uses the provided map and 535 factory. It can generate a multimap based on arbitrary <A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><CODE>Map</CODE></A> and 536 <A HREF="http://java.sun.com/javase/6/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util"><CODE>SortedSet</CODE></A> classes. 537 538 <p>The <code>factory</code>-generated and <code>map</code> classes determine the 539 multimap iteration order. They also specify the behavior of the 540 <code>equals</code>, <code>hashCode</code>, and <code>toString</code> methods for the 541 multimap and its returned views. However, the multimap's <code>get</code> 542 method returns instances of a different class than <code>factory.get()</code> 543 does. 544 545 <p>The multimap is serializable if <code>map</code>, <code>factory</code>, the 546 sets generated by <code>factory</code>, and the multimap contents are all 547 serializable. 548 549 <p>The multimap is not threadsafe when any concurrent operations update the 550 multimap, even if <code>map</code> and the instances generated by 551 <code>factory</code> are. Concurrent read operations will work correctly. To 552 allow concurrent update operations, wrap the multimap with a call to 553 <A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedSortedSetMultimap(com.google.common.collect.SortedSetMultimap)"><CODE>synchronizedSortedSetMultimap(com.google.common.collect.SortedSetMultimap<K, V>)</CODE></A>. 554 555 <p>Call this method only when the simpler methods 556 <A HREF="../../../../com/google/common/collect/TreeMultimap.html#create()"><CODE>TreeMultimap.create()</CODE></A> and 557 <A HREF="../../../../com/google/common/collect/TreeMultimap.html#create(java.util.Comparator, java.util.Comparator)"><CODE>TreeMultimap.create(Comparator, Comparator)</CODE></A> won't suffice. 558 559 <p>Note: the multimap assumes complete ownership over of <code>map</code> and 560 the sets returned by <code>factory</code>. Those objects should not be manually 561 updated and they should not use soft, weak, or phantom references. 562 <P> 563 <DD><DL> 564 <DT><B>Parameters:</B><DD><CODE>map</CODE> - place to store the mapping from each key to its corresponding 565 values<DD><CODE>factory</CODE> - supplier of new, empty sorted sets that will each hold 566 all values for a given key 567 <DT><B>Throws:</B> 568 <DD><CODE><A HREF="http://java.sun.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if <code>map</code> is not empty</DL> 569 </DD> 570 </DL> 571 <HR> 572 573 <A NAME="invertFrom(com.google.common.collect.Multimap,com.google.common.collect.Multimap)"><!-- --></A><A NAME="invertFrom(com.google.common.collect.Multimap, M)"><!-- --></A><H3> 574 invertFrom</H3> 575 <PRE> 576 public static <K,V,M extends <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V>> M <B>invertFrom</B>(<A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><? extends V,? extends K> source, 577 M dest)</PRE> 578 <DL> 579 <DD>Copies each key-value mapping in <code>source</code> into <code>dest</code>, with 580 its key and value reversed. 581 <P> 582 <DD><DL> 583 <DT><B>Parameters:</B><DD><CODE>source</CODE> - any multimap<DD><CODE>dest</CODE> - the multimap to copy into; usually empty 584 <DT><B>Returns:</B><DD><code>dest</code></DL> 585 </DD> 586 </DL> 587 <HR> 588 589 <A NAME="synchronizedMultimap(com.google.common.collect.Multimap)"><!-- --></A><H3> 590 synchronizedMultimap</H3> 591 <PRE> 592 public static <K,V> <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V> <B>synchronizedMultimap</B>(<A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V> multimap)</PRE> 593 <DL> 594 <DD>Returns a synchronized (thread-safe) multimap backed by the specified 595 multimap. In order to guarantee serial access, it is critical that 596 <b>all</b> access to the backing multimap is accomplished through the 597 returned multimap. 598 599 <p>It is imperative that the user manually synchronize on the returned 600 multimap when accessing any of its collection views: <pre> <code>Multimap<K, V> m = Multimaps.synchronizedMultimap( 601 HashMultimap.<K, V>create()); 602 ... 603 Set<K> s = m.keySet(); // Needn't be in synchronized block 604 ... 605 synchronized (m) { // Synchronizing on m, not s! 606 Iterator<K> i = s.iterator(); // Must be in synchronized block 607 while (i.hasNext()) { 608 foo(i.next()); 609 } 610 }</code></pre> 611 612 Failure to follow this advice may result in non-deterministic behavior. 613 614 <p>Note that the generated multimap's <A HREF="../../../../com/google/common/collect/Multimap.html#removeAll(java.lang.Object)"><CODE>Multimap.removeAll(java.lang.Object)</CODE></A> and 615 <A HREF="../../../../com/google/common/collect/Multimap.html#replaceValues(K, java.lang.Iterable)"><CODE>Multimap.replaceValues(K, java.lang.Iterable<? extends V>)</CODE></A> methods return collections that aren't 616 synchronized. 617 618 <p>The returned multimap will be serializable if the specified multimap is 619 serializable. 620 <P> 621 <DD><DL> 622 <DT><B>Parameters:</B><DD><CODE>multimap</CODE> - the multimap to be wrapped in a synchronized view 623 <DT><B>Returns:</B><DD>a synchronized view of the specified multimap</DL> 624 </DD> 625 </DL> 626 <HR> 627 628 <A NAME="unmodifiableMultimap(com.google.common.collect.Multimap)"><!-- --></A><H3> 629 unmodifiableMultimap</H3> 630 <PRE> 631 public static <K,V> <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V> <B>unmodifiableMultimap</B>(<A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect">Multimap</A><K,V> delegate)</PRE> 632 <DL> 633 <DD>Returns an unmodifiable view of the specified multimap. Query operations on 634 the returned multimap "read through" to the specified multimap, and 635 attempts to modify the returned multimap, either directly or through the 636 multimap's views, result in an <code>UnsupportedOperationException</code>. 637 638 <p>Note that the generated multimap's <A HREF="../../../../com/google/common/collect/Multimap.html#removeAll(java.lang.Object)"><CODE>Multimap.removeAll(java.lang.Object)</CODE></A> and 639 <A HREF="../../../../com/google/common/collect/Multimap.html#replaceValues(K, java.lang.Iterable)"><CODE>Multimap.replaceValues(K, java.lang.Iterable<? extends V>)</CODE></A> methods return collections that are 640 modifiable. 641 642 <p>The returned multimap will be serializable if the specified multimap is 643 serializable. 644 <P> 645 <DD><DL> 646 <DT><B>Parameters:</B><DD><CODE>delegate</CODE> - the multimap for which an unmodifiable view is to be 647 returned 648 <DT><B>Returns:</B><DD>an unmodifiable view of the specified multimap</DL> 649 </DD> 650 </DL> 651 <HR> 652 653 <A NAME="synchronizedSetMultimap(com.google.common.collect.SetMultimap)"><!-- --></A><H3> 654 synchronizedSetMultimap</H3> 655 <PRE> 656 public static <K,V> <A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V> <B>synchronizedSetMultimap</B>(<A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V> multimap)</PRE> 657 <DL> 658 <DD>Returns a synchronized (thread-safe) <code>SetMultimap</code> backed by the 659 specified multimap. 660 661 <p>You must follow the warnings described in <A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedMultimap(com.google.common.collect.Multimap)"><CODE>synchronizedMultimap(com.google.common.collect.Multimap<K, V>)</CODE></A>. 662 663 <p>The returned multimap will be serializable if the specified multimap is 664 serializable. 665 <P> 666 <DD><DL> 667 <DT><B>Parameters:</B><DD><CODE>multimap</CODE> - the multimap to be wrapped 668 <DT><B>Returns:</B><DD>a synchronized view of the specified multimap</DL> 669 </DD> 670 </DL> 671 <HR> 672 673 <A NAME="unmodifiableSetMultimap(com.google.common.collect.SetMultimap)"><!-- --></A><H3> 674 unmodifiableSetMultimap</H3> 675 <PRE> 676 public static <K,V> <A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V> <B>unmodifiableSetMultimap</B>(<A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V> delegate)</PRE> 677 <DL> 678 <DD>Returns an unmodifiable view of the specified <code>SetMultimap</code>. Query 679 operations on the returned multimap "read through" to the specified 680 multimap, and attempts to modify the returned multimap, either directly or 681 through the multimap's views, result in an 682 <code>UnsupportedOperationException</code>. 683 684 <p>Note that the generated multimap's <A HREF="../../../../com/google/common/collect/Multimap.html#removeAll(java.lang.Object)"><CODE>Multimap.removeAll(java.lang.Object)</CODE></A> and 685 <A HREF="../../../../com/google/common/collect/Multimap.html#replaceValues(K, java.lang.Iterable)"><CODE>Multimap.replaceValues(K, java.lang.Iterable<? extends V>)</CODE></A> methods return collections that are 686 modifiable. 687 688 <p>The returned multimap will be serializable if the specified multimap is 689 serializable. 690 <P> 691 <DD><DL> 692 <DT><B>Parameters:</B><DD><CODE>delegate</CODE> - the multimap for which an unmodifiable view is to be 693 returned 694 <DT><B>Returns:</B><DD>an unmodifiable view of the specified multimap</DL> 695 </DD> 696 </DL> 697 <HR> 698 699 <A NAME="synchronizedSortedSetMultimap(com.google.common.collect.SortedSetMultimap)"><!-- --></A><H3> 700 synchronizedSortedSetMultimap</H3> 701 <PRE> 702 public static <K,V> <A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V> <B>synchronizedSortedSetMultimap</B>(<A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V> multimap)</PRE> 703 <DL> 704 <DD>Returns a synchronized (thread-safe) <code>SortedSetMultimap</code> backed by 705 the specified multimap. 706 707 <p>You must follow the warnings described in <A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedMultimap(com.google.common.collect.Multimap)"><CODE>synchronizedMultimap(com.google.common.collect.Multimap<K, V>)</CODE></A>. 708 709 <p>The returned multimap will be serializable if the specified multimap is 710 serializable. 711 <P> 712 <DD><DL> 713 <DT><B>Parameters:</B><DD><CODE>multimap</CODE> - the multimap to be wrapped 714 <DT><B>Returns:</B><DD>a synchronized view of the specified multimap</DL> 715 </DD> 716 </DL> 717 <HR> 718 719 <A NAME="unmodifiableSortedSetMultimap(com.google.common.collect.SortedSetMultimap)"><!-- --></A><H3> 720 unmodifiableSortedSetMultimap</H3> 721 <PRE> 722 public static <K,V> <A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V> <B>unmodifiableSortedSetMultimap</B>(<A HREF="../../../../com/google/common/collect/SortedSetMultimap.html" title="interface in com.google.common.collect">SortedSetMultimap</A><K,V> delegate)</PRE> 723 <DL> 724 <DD>Returns an unmodifiable view of the specified <code>SortedSetMultimap</code>. 725 Query operations on the returned multimap "read through" to the specified 726 multimap, and attempts to modify the returned multimap, either directly or 727 through the multimap's views, result in an 728 <code>UnsupportedOperationException</code>. 729 730 <p>Note that the generated multimap's <A HREF="../../../../com/google/common/collect/Multimap.html#removeAll(java.lang.Object)"><CODE>Multimap.removeAll(java.lang.Object)</CODE></A> and 731 <A HREF="../../../../com/google/common/collect/Multimap.html#replaceValues(K, java.lang.Iterable)"><CODE>Multimap.replaceValues(K, java.lang.Iterable<? extends V>)</CODE></A> methods return collections that are 732 modifiable. 733 734 <p>The returned multimap will be serializable if the specified multimap is 735 serializable. 736 <P> 737 <DD><DL> 738 <DT><B>Parameters:</B><DD><CODE>delegate</CODE> - the multimap for which an unmodifiable view is to be 739 returned 740 <DT><B>Returns:</B><DD>an unmodifiable view of the specified multimap</DL> 741 </DD> 742 </DL> 743 <HR> 744 745 <A NAME="synchronizedListMultimap(com.google.common.collect.ListMultimap)"><!-- --></A><H3> 746 synchronizedListMultimap</H3> 747 <PRE> 748 public static <K,V> <A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V> <B>synchronizedListMultimap</B>(<A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V> multimap)</PRE> 749 <DL> 750 <DD>Returns a synchronized (thread-safe) <code>ListMultimap</code> backed by the 751 specified multimap. 752 753 <p>You must follow the warnings described in <A HREF="../../../../com/google/common/collect/Multimaps.html#synchronizedMultimap(com.google.common.collect.Multimap)"><CODE>synchronizedMultimap(com.google.common.collect.Multimap<K, V>)</CODE></A>. 754 <P> 755 <DD><DL> 756 <DT><B>Parameters:</B><DD><CODE>multimap</CODE> - the multimap to be wrapped 757 <DT><B>Returns:</B><DD>a synchronized view of the specified multimap</DL> 758 </DD> 759 </DL> 760 <HR> 761 762 <A NAME="unmodifiableListMultimap(com.google.common.collect.ListMultimap)"><!-- --></A><H3> 763 unmodifiableListMultimap</H3> 764 <PRE> 765 public static <K,V> <A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V> <B>unmodifiableListMultimap</B>(<A HREF="../../../../com/google/common/collect/ListMultimap.html" title="interface in com.google.common.collect">ListMultimap</A><K,V> delegate)</PRE> 766 <DL> 767 <DD>Returns an unmodifiable view of the specified <code>ListMultimap</code>. Query 768 operations on the returned multimap "read through" to the specified 769 multimap, and attempts to modify the returned multimap, either directly or 770 through the multimap's views, result in an 771 <code>UnsupportedOperationException</code>. 772 773 <p>Note that the generated multimap's <A HREF="../../../../com/google/common/collect/Multimap.html#removeAll(java.lang.Object)"><CODE>Multimap.removeAll(java.lang.Object)</CODE></A> and 774 <A HREF="../../../../com/google/common/collect/Multimap.html#replaceValues(K, java.lang.Iterable)"><CODE>Multimap.replaceValues(K, java.lang.Iterable<? extends V>)</CODE></A> methods return collections that are 775 modifiable. 776 777 <p>The returned multimap will be serializable if the specified multimap is 778 serializable. 779 <P> 780 <DD><DL> 781 <DT><B>Parameters:</B><DD><CODE>delegate</CODE> - the multimap for which an unmodifiable view is to be 782 returned 783 <DT><B>Returns:</B><DD>an unmodifiable view of the specified multimap</DL> 784 </DD> 785 </DL> 786 <HR> 787 788 <A NAME="forMap(java.util.Map)"><!-- --></A><H3> 789 forMap</H3> 790 <PRE> 791 public static <K,V> <A HREF="../../../../com/google/common/collect/SetMultimap.html" title="interface in com.google.common.collect">SetMultimap</A><K,V> <B>forMap</B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</A><K,V> map)</PRE> 792 <DL> 793 <DD>Returns a multimap view of the specified map. The multimap is backed by the 794 map, so changes to the map are reflected in the multimap, and vice versa. 795 If the map is modified while an iteration over one of the multimap's 796 collection views is in progress (except through the iterator's own <code>remove</code> operation, or through the <code>setValue</code> operation on a map entry 797 returned by the iterator), the results of the iteration are undefined. 798 799 <p>The multimap supports mapping removal, which removes the corresponding 800 mapping from the map. It does not support any operations which might add 801 mappings, such as <code>put</code>, <code>putAll</code> or <code>replaceValues</code>. 802 803 <p>The returned multimap will be serializable if the specified map is 804 serializable. 805 <P> 806 <DD><DL> 807 <DT><B>Parameters:</B><DD><CODE>map</CODE> - the backing map for the returned multimap view</DL> 808 </DD> 809 </DL> 810 <HR> 811 812 <A NAME="index(java.lang.Iterable, com.google.common.base.Function)"><!-- --></A><H3> 813 index</H3> 814 <PRE> 815 public static <K,V> <A HREF="../../../../com/google/common/collect/ImmutableListMultimap.html" title="class in com.google.common.collect">ImmutableListMultimap</A><K,V> <B>index</B>(<A HREF="http://java.sun.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</A><V> values, 816 <A HREF="../../../../com/google/common/base/Function.html" title="interface in com.google.common.base">Function</A><? super V,K> keyFunction)</PRE> 817 <DL> 818 <DD>Creates an index <code>ImmutableMultimap</code> that contains the results of 819 applying a specified function to each item in an <code>Iterable</code> of 820 values. Each value will be stored as a value in the resulting multimap, 821 yielding a multimap with the same size as the input iterable. The key used 822 to store that value in the multimap will be the result of calling the 823 function on that value. The resulting multimap is created as an immutable 824 snapshot, it does <em>not</em> reflect subsequent changes on the input 825 iterable. 826 827 <p>For example, <pre class="code"> <code>List<String> badGuys 828 = Arrays.asList("Inky", "Blinky", "Pinky", "Pinky", "Clyde"); 829 Function<String, Integer> stringLengthFunction = ...; 830 Multimap<Integer, String> index 831 = Multimaps.index(badGuys, stringLengthFunction); 832 System.out.println(index);</code></pre> 833 834 prints <pre class="code"> <code>{4=[Inky], 5=[Pinky, Pinky, Clyde], 6=[Blinky]}</code></pre> 835 836 <p>The returned multimap is serializable if its keys and values are all 837 serializable. 838 <P> 839 <DD><DL> 840 <DT><B>Parameters:</B><DD><CODE>values</CODE> - the values to use when constructing the <code>ImmutableMultimap</code><DD><CODE>keyFunction</CODE> - the function used to produce the key for each value 841 <DT><B>Returns:</B><DD><code>ImmutableMultimap</code> mapping the result of evaluating the 842 function <code>keyFunction</code> on each value in the input collection to 843 that value 844 <DT><B>Throws:</B> 845 <DD><CODE><A HREF="http://java.sun.com/javase/6/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</A></CODE> - if any of the following cases is true: <ul> 846 <li> <code>values</code> is null 847 <li> <code>keyFunction</code> is null 848 <li> An element in <code>values</code> is null 849 <li> <code>keyFunction</code> returns null for any element of <code>values</code> 850 </ul></DL> 851 </DD> 852 </DL> 853 <!-- ========= END OF CLASS DATA ========= --> 854 <HR> 855 856 857 <!-- ======= START OF BOTTOM NAVBAR ====== --> 858 <A NAME="navbar_bottom"><!-- --></A> 859 <A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> 860 <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 861 <TR> 862 <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 863 <A NAME="navbar_bottom_firstrow"><!-- --></A> 864 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 865 <TR ALIGN="center" VALIGN="top"> 866 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> 867 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> 868 <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> 869 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Multimaps.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD> 870 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> 871 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> 872 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> 873 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> 874 </TR> 875 </TABLE> 876 </TD> 877 <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 878 </EM> 879 </TD> 880 </TR> 881 882 <TR> 883 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 884 <A HREF="../../../../com/google/common/collect/Multimap.html" title="interface in com.google.common.collect"><B>PREV CLASS</B></A> 885 <A HREF="../../../../com/google/common/collect/Multiset.html" title="interface in com.google.common.collect"><B>NEXT CLASS</B></A></FONT></TD> 886 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 887 <A HREF="../../../../index.html?com/google/common/collect/Multimaps.html" target="_top"><B>FRAMES</B></A> 888 <A HREF="Multimaps.html" target="_top"><B>NO FRAMES</B></A> 889 <SCRIPT type="text/javascript"> 890 <!-- 891 if(window==top) { 892 document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); 893 } 894 //--> 895 </SCRIPT> 896 <NOSCRIPT> 897 <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> 898 </NOSCRIPT> 899 900 901 </FONT></TD> 902 </TR> 903 <TR> 904 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 905 SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> 906 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 907 DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> 908 </TR> 909 </TABLE> 910 <A NAME="skip-navbar_bottom"></A> 911 <!-- ======== END OF BOTTOM NAVBAR ======= --> 912 913 <HR> 914 915 </BODY> 916 </HTML> 917