思路:使用排序的方法,异位词字符串包含的字母是相同的,所以字母经过排序后都是一样的。可以使用一个hashmap,key为排序过后的字符串,值为列表,这样的话通过遍历字符串,直接往当前字符串排序过后的key里面添加当前字符串列表就行了。

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String,List<String>> map = new HashMap<>();
        for(String str : strs){
            //将字符串转化为char数据才能进行排序
            char[] array = str.toCharArray();
            //直接调用Arrays的静态方法sort即可进行排序
            Arrays.sort(array);
            //将char数组转为字符串,作为key
            String key = new String(array);
            //通过key获取字符串列表,没有则创建
            List<String> list = map.getOrDefault(key,new ArrayList<String>());
            //将当前字符串添加到列表中
            list.add(str);
            //添加到map
            map.put(key,list);
        }
        return new ArrayList<List<String>>(map.values());
    }
}