黑马程序员技术交流社区
标题:
如何将一个"整集合"分成几个"子集合"
[打印本页]
作者:
赵俊杰
时间:
2012-8-19 23:37
标题:
如何将一个"整集合"分成几个"子集合"
如,集合内有1万条数据,我想把它们分成5个子集合,一个子集合分2千条数据。
(然后我就可以做成线程,5个线程各自处理分给自己的2千条数据,用以提高效率,该怎么做?您用什么集合都可以,只要支持<String,String>这样的格式就行。)
{:soso__9970900024395533773_1:}
作者:
赵俊杰
时间:
2012-8-19 23:45
本帖最后由 赵俊杰 于 2012-8-20 00:28 编辑
寻高手指导。{:soso_e163:}
作者:
赵俊杰
时间:
2012-8-20 10:37
睡觉前,我用这样的方式解决了。
还要用到一个List,在迭代hashmap时,同时把键值存给List。这样就可以利用List的属性特点,将List分段,小List们各自按照分给自己的键值,自己去查Hashmap。
不过,高手啊,这样是不是有点把小事情整麻烦了?
作者:
赵俊杰
时间:
2012-8-20 14:57
import java.util.HashMap;
public class test
{
public static void main(String args[]) throws Exception
{
HashMap<String,String> hm=new HashMap<String,String>();
for(int i=65;i<91;i++)
{
hm.put(String.valueOf((char)i),String.valueOf(i));
}
Object obj[]=hm.keySet().toArray();
int splitData=5; //按几个数据分
int totalPage=obj.length/splitData; //能分多少段
int remainder=obj.length%splitData; //还余多少个
System.out.println(hm.getClass().getSimpleName()+"中共有("+obj.length+")个人.\n按每组("+splitData+")个人来分,可以分为("
+totalPage+")组。剩余("+remainder+")个人。");
for(int i=0;i<obj.length-splitData;i+=splitData)
{
for(int j=0;j<splitData;j++)
{
System.out.print(obj[i+j]);
}
System.out.println();
}
for(int i=0;i<remainder;i++) //取出剩余的
{
System.out.print((i!=remainder-1)?(String)obj[totalPage+i]:(String)obj[totalPage+i]+"(啊哦,好像剩我"+remainder+"个了,求组团啊)");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2