public List<String> anagrams(String[] strs) {

    Map<String, List<String>> map = new HashMap<String, List<String>>();

    for (String str : strs) {

      char[] charArr = str.toCharArray();
      Arrays.sort(charArr);
      String sortedStr = new String(charArr);

      List<String> values = map.get(sortedStr);
      if (values == null) {
        values = new ArrayList<String>();
        map.put(sortedStr, values);
      }
      values.add(str);
    }

    List<String> rst = new ArrayList<String>();
    for (String key : map.keySet()) {
      List<String> values = map.get(key);
      if (values.size() > 1) {
        rst.addAll(values);
      }
    }

    return rst;
  }