xueyin87 / guava-libraries

Automatically exported from code.google.com/p/guava-libraries
Apache License 2.0
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

Original comment by kevinb@google.com on 30 Jul 2010 at 3:50

GoogleCodeExporter commented 9 years ago
Maps.transformEntries() added. Another issue (291) tracks the creation of a 
SortedMaps class.

Original comment by kevinb@google.com on 2 Aug 2010 at 10:07

GoogleCodeExporter commented 9 years ago
This issue has been migrated to GitHub.

It can be found at https://github.com/google/guava/issues/<id>

Original comment by cgdecker@google.com on 1 Nov 2014 at 4:16

GoogleCodeExporter commented 9 years ago

Original comment by cgdecker@google.com on 3 Nov 2014 at 9:10