有下面一组数据,数据量大概有1000条左右,如何在时间复杂度是O(n)的前提下,实现分组
例如:
1 234
1 sds
2 sdsdsd
2 wwwwwww
1 ssassassww
4 sdsaass
5 234
1 skskks
.....
结果:
1 [234,sds,ssassassww,skskks]
5 [234]
2 [sds,sdsdsd]
4 [sdsaass]
package littlejava;
import java.util.ArrayList;
import java.util.List;
/*
* 有下面一组数据,数据量大概有1000条左右,
* 如何在时间复杂度是O(n)的前提下,实现分组
*/
public class GroupBy
{
public static void main(String [] args)
{
String [] input= new String[] { "1:234", "1:sds",
"2:sdsdsd", "2:wwwwwww", "1:ssassassww", "4:sdsaass", "5:234",
"1:skskks" };
List[]listArray = groupby(input);
for(int i=0;i<listArray.length;i++)
{
List alist = listArray[i];
if(alist!=null)//不为null,就不要输出否则抛出异常
{
System.out.print(i+": ");
for(int j=0;j<alist.size();j++)
{
System.out.print(alist.get(j)+",");
}
System.out.println();
}
}
}
public static List[] groupby(String [] arrayStr)
{
List[]listArray=new ArrayList[arrayStr.length];//只是生成一个数组,每个元素的ArrayList还没生成
String strtemp;
for(int i=0;i<arrayStr.length;i++)
{
strtemp=arrayStr[i];
String str_index = strtemp.split(":")[0];
String value = strtemp.split(":")[1];
int index = Integer.parseInt(str_index);
if(listArray[index]==null)
{
listArray[index]=new ArrayList();//这是要生成ArrayList
}
listArray[index].add(value);
}
return listArray;
}
}