日期:2014-05-16 浏览次数:20404 次
有下面一组数据,数据量大概有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; } }
?