10.字符串数组,分组
实现字符串分组 [“ate”,”att”,”test”,”ttes”,”tae”] 分组结果是
[[“ate”,”tae”],[“test”,”ttes],[“att”]]
public static List<List<String>> group(String[] str) {
//生成一个Map集合,用于存储,key存储字符串排序后的新字符串,List存储排序一样的字符串,所以用集合
HashMap<String, List<String>> map = new HashMap<>();
for (String s : str) {
//将字符串转换为byte类型的数组,进行排序,并生成新字符串,作为Map的key值
byte[] by = s.getBytes();
Arrays.sort(by);
String key = new String(by);
//判断如果新字符串在Map的key中不存在,就添加一个新的entry键值对
if (!map.containsKey(key)) {
map.put(key, new ArrayList<String>());
}
//将旧字符串s添加到,对应key值对应的value,及List集合中
map.get(key).add(s);
}
//因为Map的values整体是用Collection存储的,要对应返回值,所以重新实例化一下
return new ArrayList<>(map.values());
}