guava/src/com/google/common/collect/MultimapBuilder.java
public static MultimapBuilderWithKeys<Object> linkedHashKeys(final int expectedKeys) {
    checkNonnegative(expectedKeys, "expectedKeys");
    return new MultimapBuilderWithKeys<Object>() {
      @Override
      <K, V> Map<K, Collection<V>> createMap() {
        return Platform.newLinkedHashMapWithExpectedSize(expectedKeys);
      }
    };
  }
public static MultimapBuilderWithKeys<Object> linkedHashKeys(final int expectedKeys) {
    checkNonnegative(expectedKeys, "expectedKeys");
    return new MultimapBuilderWithKeys<Object>() {
      @Override
      <K, V> Map<K, Collection<V>> createMap() {
        return Platform.newLinkedHashMapWithExpectedSize(expectedKeys);
      }
    };
  }
Uses an hash table to map keys to value collections, initialized to expect the specified number
of keys.

<p>The collections returned by {@link Multimap#keySet()}, {@link Multimap#keys()}, and {@link
Multimap#asMap()} will iterate through the keys in the order that they were first added to the
multimap, save that if all values associated with a key are removed and then the key is added
back into the multimap, that key will come last in the key iteration order.