各位大虾们,散分了!

yygywqf 2010-04-09 07:52:12
一个算是算法题:一个大集合List中存放了一些对象(List中对象数据是有序),需要将大集合中的数据分成多个小集合并生成一个Map,map中一个Key对应一个小集合。例:
Class A //对象
{
busiType;
proptis; //须序
value;
}

A a1 = new ("CC000",0,"aaa");
A a2 = new ("CC000",1,"bbb");
A a3 = new ("CC001",0,"aaa");
A a4 = new ("CC001",1,"bbb");
A a5 = new ("CC001",2,"ccc");
A a6 = new ("CC002",0,"aaa");
A a7 = new ("CC002",1,"aaa");
A a8 = new ("CC003",0,"aaa");
A a9 = new ("CC003",1,"aaa");
将上面对象放入一个大集合中List<A> maxList = new ArrayList<A>()。
需要这种效果:小集合
A a1 = new ("CC000",0,"aaa");
A a2 = new ("CC000",1,"bbb");


A a3 = new ("CC001",0,"aaa");
A a4 = new ("CC001",1,"bbb");
A a5 = new ("CC001",2,"ccc");


A a6 = new ("CC002",0,"aaa");
A a7 = new ("CC002",1,"aaa");


A a8 = new ("CC003",0,"aaa");
A a9 = new ("CC003",1,"aaa");


将大集合中对象busiType相同的分成多个小集合 List<A> smallList = new arrayList<A>();
并按busiType为Key放入一个Map中
Map<String,List<A>> map = new HashMap<String,List<A>>();











...全文
221 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangliang_88 2010-10-12
  • 打赏
  • 举报
回复
集合 学习~
vietor 2010-10-12
  • 打赏
  • 举报
回复
too 少了。
凉岑玉 2010-10-12
  • 打赏
  • 举报
回复
20分也叫散分???无解···
24K純帥 2010-10-12
  • 打赏
  • 举报
回复
学习额。。
floydmoney 2010-10-12
  • 打赏
  • 举报
回复
搞定,一下是源码!
public class Test {
public static List<A> getMaxList(){
A a1 = new A("CC000",0,"aaa");
A a2 = new A("CC000",1,"bbb");
A a3 = new A("CC001",0,"aaa");
A a4 = new A("CC001",1,"bbb");
A a5 = new A("CC001",2,"ccc");
A a6 = new A("CC002",0,"aaa");
A a7 = new A("CC002",1,"aaa");
A a8 = new A("CC003",0,"aaa");
A a9 = new A("CC003",1,"aaa");
List<A> maxList = new ArrayList<A>();
maxList.add(a1);
maxList.add(a2);
maxList.add(a3);
maxList.add(a4);
maxList.add(a5);
maxList.add(a6);
maxList.add(a7);
maxList.add(a8);
maxList.add(a9);
return maxList;
}
public static void insertSort(List<A> list , A obj){
//首先判断元素是否小于第一个或大于最后一个
A minObj = list.get(0);
A maxObj = list.get(list.size()-1);
if(minObj.getProptis() > obj.getProptis()){
list.add(0 , obj);
return;
}else if(maxObj.getProptis() < obj.getProptis()){
list.add(obj);
return;
}
//循环判断插入位置并插入元素
for(int i = 0 ; i < list.size() - 1 ; i ++){
//当前i对应位置的原始
A currentObj = list.get(i);
//当前i对应位置的下一个元素
A nextObj = list.get(i + 1);
if(obj.getProptis() > currentObj.getProptis() && obj.getProptis() < nextObj.getProptis()){
list.add(i + 1 , obj);
}
}
}

public static void main(String[] args){
List<A> maxList = Test.getMaxList();
Map<String , List<A>> resultMap = new HashMap<String , List<A>>();
for(A a : maxList){
if(resultMap.containsKey(a.getBusiType())){
Test.insertSort(resultMap.get(a.getBusiType()), a);
}else{
List<A> templist = new ArrayList<A>();
templist.add(a);
resultMap.put(a.getBusiType(), templist);
}
}

}
}
class A{
private String busiType;
private int proptis;//须序
private String value;

public A(String busiType, int proptis, String value) {
this.busiType = busiType;
this.proptis = proptis;
this.value = value;
}
public String getBusiType() {
return busiType;
}
public void setBusiType(String busiType) {
this.busiType = busiType;
}
public int getProptis() {
return proptis;
}
public void setProptis(int proptis) {
this.proptis = proptis;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
brock220 2010-10-12
  • 打赏
  • 举报
回复
楼主你想要干吗..?
银河冰龙 2010-10-12
  • 打赏
  • 举报
回复
没事 进来看看
rj1094 2010-10-12
  • 打赏
  • 举报
回复
学东西来了~~~~~~
ZZZ5512536 2010-10-12
  • 打赏
  • 举报
回复
20分 够分么……
zlllyk110 2010-10-12
  • 打赏
  • 举报
回复
来jf
撿烬寒枝 2010-10-11
  • 打赏
  • 举报
回复
What?
upswjj 2010-10-11
  • 打赏
  • 举报
回复
学习了~~~~
clariones 2010-10-11
  • 打赏
  • 举报
回复

A[] a = {new A(...), .... new A(...)};
Map<String, List<A>> map = new HashMap<String, List<A>>;
for(int i=0;i<a.length;i++){
String key = a[i].busiType;
List<A> list = map.get(key);
if (list == null){
list = new Vector<A>();
map.put(key, list);
}
list.add(a[i]);
}

楼主是想要这个么?
千锤_百炼 2010-10-04
  • 打赏
  • 举报
回复
接分~~~~~~~~~~
liukelin 2010-10-02
  • 打赏
  • 举报
回复
給分啊啊啊
wuxiuxiang 2010-10-01
  • 打赏
  • 举报
回复
进来学习一下
千杯不醉-sen 2010-10-01
  • 打赏
  • 举报
回复
学习了JF...
bbb332 2010-04-10
  • 打赏
  • 举报
回复
果然是好的散分帖,如果200人回复,每人0.1分,哈哈 。
joaryyu 2010-04-10
  • 打赏
  • 举报
回复
果然是好的散分帖,如果200人回复,每人0.1分,哈哈 。
niulei190922 2010-04-10
  • 打赏
  • 举报
回复
学习一下
加载更多回复(5)

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧