ImageTable { static <K, V> Iterable<Map.Entry<K, V>> zip(Iterable<K> first, Iterable<V> second) { checkArgument(Iterables.size(first) == Iterables.size(second), "iterables don't have the same size"); final Iterator<K> iterator = first.iterator(); return newArrayList(transform(second, new Function<V, Map.Entry<K, V>>() { @Override public Map.Entry<K, V> apply(V input) { return Maps.immutableEntry(iterator.next(), input); } })); } ImageTable(Table<String, String, String> table); static ImageTable fromCsvResource(String resource); ImageTableQuery query(); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString();  }
@Test public void testZipIterators() { Iterable<Map.Entry<String, String>> entries = ImageTable.zip( ImmutableList.of("a", "b"), ImmutableList.of("1", "2")); assertThat(entries).containsAll(ImmutableList.of( Maps.immutableEntry("a", "1"), Maps.immutableEntry("b", "2"))); }