import java.util.*;
/**
*
* 输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
* 输出:
* [
* ["ate","eat","tea"],
* ["nat","tan"],
* ["bat"]
* ]
* 说明:
* 所有输入均为小写字母。不考虑答案输出的顺序。
*
*/
public class Test {
public static void main(String[] args) {
//思路
//1.元素按照字母顺序排序后放入map 作为key 值为list集合存储分组后的数据
//2.收集map成二维数组
String[] strs = new String[]{ "eat", "tea", "tan", "ate", "nat", "bat"};
Map<String,List> keys = new HashMap<>();
for (String str:strs) {
String orderKey =getOrder(str);
keys.computeIfAbsent(orderKey,key -> new ArrayList() );//new一个数组
keys.get(orderKey).add(str);
}
Set<String> k = keys.keySet();
for(String key:k)
{
//打印数组
System.out.println(keys.get(key));
}
}
public static String getOrder(String str){
char[] s = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length-1; i++) {//标准排序算法,冒泡法
//i是第几次
for (int j = 0; j <s.length-1-i ; j++) {
//大数一直往后移动
if(s[j]>s[j+1])
{
//交换顺序,大数后移动
char temp = s[j];
s[j] =s[j+1];
s[j+1] =temp;
}
}
}
return new String(s);
}
}
08-01
349
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-10