public class Anagrams {
    private static final String NON_LETTER_CHAR = "[^a-zA-Z]";
    public static String CreateAnagrams(final String sentence) {
        final String splitSentence[] = sentence.split(" ");
        String anagramSentence = "";
        for (int i = 0; i < splitSentence.length; i++) {
            final String currentWord = splitSentence[i];
            final char[] currentWordChar = currentWord.toCharArray();
            final TreeMap nonLetterPosition = new TreeMap<>();
            for (int j = 0; j < currentWordChar.length; j++) {
                saveNonLetterPos(currentWordChar[j], nonLetterPosition, j);
            }
            final String onlyLetterWord = currentWord.replaceAll(NON_LETTER_CHAR, "");
            String anagramWord = new StringBuffer(onlyLetterWord).reverse().toString();
            anagramWord = insertNonLetterSymbol(nonLetterPosition, anagramWord);
            anagramSentence = anagramSentence + " " + anagramWord;
        }
        return anagramSentence;
    }
    private static String insertNonLetterSymbol(TreeMap nonLetterPosition, String anagramWord) {
        for (Map.Entry entry : nonLetterPosition.entrySet()) {
            Integer position = entry.getKey();
            char nonLetterSymbol = entry.getValue();
            anagramWord = new StringBuffer(anagramWord).insert(position, String.valueOf(nonLetterSymbol)).toString();
        }
        return anagramWord;
    }
    private static void saveNonLetterPos(char ch, TreeMap nonLetterPosition, int j) {
        if (!Character.isLetter(ch)) {
            nonLetterPosition.put(j, ch);
        }
    }
}