tikinghu / google-collections

Automatically exported from code.google.com/p/google-collections
0 stars 0 forks source link

add transformEntries method to Maps and SortedMaps #303

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
The Maps class should have a transformEntries method. Currently there is
only transformValues method. Sometimes the result of transformation depends
also on the key, not only on the original value.
Also it would honor a principle of uniformity because filtering methods
already exist in both forms - filterEntries and filterValues.

(This issue raised from the
http://code.google.com/p/google-collections/issues/detail?id=291 issue
where the method was meant for newly proposed class SortedMaps, later I
realized that it is not in Maps class too.)

Thanks!

Original issue reported on code.google.com by tomas.za...@gmail.com on 30 Nov 2009 at 8:51

GoogleCodeExporter commented 9 years ago
In a transformEntries() method, one could transform the key as well as the 
value, and 
we couldn't be sure that two entries weren't transforming their key to the same 
value. The result would be a corrupted map.

What would make more sense is a version that accepts a Function<Entry<K, V1>, 
V2>; 
that is, the key is available to the function but a new key can't be produced. 
However, it's too late to change the existing method to work this way, it can't 
be 
added as an overload, and it -- at this point -- doesn't strike as being widely 
useful enough to justify a new method on the class.

However, I'll leave this open for other users to provide additional motivation.

Original comment by kevinb@google.com on 8 Dec 2009 at 5:32

GoogleCodeExporter commented 9 years ago
Tomas's suggestion in Issue 291 did have the form you suggest:

<K,V1,V2> SortedMaps.transformEntries(
  SortedMap<K,V1> fromMap,
  Function<? super Map.Entry<K,V1>,V2> function
)

Since that issue dealt with SortedMaps, I asked him to file a separate issue 
about 
the new method. 

Original comment by jared.l....@gmail.com on 8 Dec 2009 at 6:16

GoogleCodeExporter commented 9 years ago
Got it; then the problem is that the name "transformEntries" is misleading; it 
would 
have to be "transformValuesByEntry" or something similarly convoluted.

Original comment by kevinb@google.com on 8 Dec 2009 at 6:32

GoogleCodeExporter commented 9 years ago
This issue has been moved to the Guava project (keeping the same id number). 
Simply replace 'google-collections' with 'guava-libraries' in your address 
bar and it should take you there.

Original comment by kevinb@google.com on 5 Jan 2010 at 11:09