
// TransformedMapTester.java
// Andrew Davison, ad@coe.psu.ac.th, May 2023

/* How to use TransformedMap. 
   It decorates another Map to transform objects that are added. 

   Also see SplitMapTester.java

  Usage:
    > compile TransformedMapTester.java
    > run TransformedMapTester

   Also see:
     LRUMapTester.java
     OrderedMapTester.java
     ExpiringMapTester
     SplitMapTester
     PredicateMapTester.java
   and
     MapUtilsTester.java

*/

import java.util.*;

import org.apache.commons.collections4.*;
import org.apache.commons.collections4.map.*;


public class TransformedMapTester 
{
  public static void main(String[] args) 
  {
    Map<Integer, String> map = new HashMap<>();  // underlying map

    // modify the key (k) and value (v) added
    TransformedMap<Integer, String> mp = 
       TransformedMap.transformingMap(map,
             k -> Math.abs(k),
             v -> v.toUpperCase());
    System.out.println("Added -1:Andrew");
    mp.put(-1, "andrew");

    System.out.println("Added -5:bill");
    mp.put(-5, "bill");

    System.out.println("\nResulting map");
    System.out.println(mp);
  }  // end of main()

}  // end of TransformedMapTester class
