import java.util.stream.*;

/** Mapping.
 * @author Jaanus
 * @since 1.8
 */
public class J8example5 {

  public static void main (String[] args) {
    "Hello World".chars()
                 .map (J8example5::myMap)
                 .forEach (ch -> System.out.print ((char)ch));
    System.out.println();
    System.out.println (reverseCase ("AAAAbbbb1234"));
  }

   public static String reverseCase(String s) {
      return s.chars().map(ch -> Character.isLowerCase(ch) ?
	Character.toUpperCase(ch) :
           (Character.isUpperCase(ch) ? Character.toLowerCase(ch) : ch))
        .mapToObj(ch -> String.valueOf((char)ch)).collect(Collectors.joining());
   }

  public static int myMap (int chi) {
	  char ch = (char)chi;
	  return Character.isLowerCase (ch)?
    		   Character.toUpperCase (ch):
    		   (Character.isUpperCase (ch)?
    		      Character.toLowerCase (ch):
    		      ch);
   }
}

