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());
}
这篇文章介绍了如何使用Java实现一个函数,将给定的字符串数组['ate', 'att', 'test', 'ttes', 'tae']按子集分组,结果为[['ate', 'tae'], ['test', 'ttes'], ['att']]。作者通过排序和哈希映射实现了一种高效的方法。
688

被折叠的 条评论
为什么被折叠?



