### Question:
ArrayMap implements Map<K, V> { @Override public final Collection<V> values() { ArrayCollection<V> list = new ArrayCollection<V>(values); return list; } private  ArrayMap(final K[] keys, final V[] values); static final ArrayMap<K,V> createMap(final K[] keys, final V[] values); @Override final int size(); @Override final boolean isEmpty(); @Override final boolean containsKey(Object key); @Override final boolean containsValue(Object value); @Override final V get(Object key); @Override final V put(K key, V value); @Override final V remove(Object key); @Override final void putAll(Map<? extends K, ? extends V> m); @Override final void clear(); @Override final Set<K> keySet(); @Override final Collection<V> values(); @Override final Set<java.util.Map.Entry<K, V>> entrySet();  }### Answer:
@Test public void testValues() { String[] keys = new String[]{"key1", "key2", "key3", "key4", "key5"}; String[] values = new String[]{"value1", "value2", "value3", "value4", "value5"}; Map<String, String> map = ArrayMap.createMap(keys, values); assertEquals(5, map.values().size()); Iterator iterator = map.values().iterator(); for ( int i=0; i<values.length; i++ ) { String type = (String) iterator.next(); assertEquals(values[i], type); } }