有一个list,list中每行元素都是一个对象
[{planvalue=150.00, org=310240, bal=100.00, rate=0.666666},
{planvalue=150.00, org=310260, bal=100.00, rate=0.666666},
{planvalue=150.00, org=310240, bal=200.00, rate=1.333333},
{planvalue=150.00, org=310260, bal=200.00, rate=1.333333}]现在想得到一个新的list 结果如下
[{planvalue1=150.00, org=310240, bal1=100.00, rate1=0.666666,planvalue2=150.00, bal2=100.00, rate2=0.666666},
{planvalue1=150.00, org=310260, bal1=200.00, rate=1.333333,planvalue2=150.00, bal2=200.00, rate2=1.333333}]其实就是把第一个list的行转换成列,另外org列中的数据行数是不定的`
[{planvalue=150.00, org=310240, bal=100.00, rate=0.666666},
{planvalue=150.00, org=310260, bal=100.00, rate=0.666666},
{planvalue=150.00, org=310240, bal=200.00, rate=1.333333},
{planvalue=150.00, org=310260, bal=200.00, rate=1.333333}]现在想得到一个新的list 结果如下
[{planvalue1=150.00, org=310240, bal1=100.00, rate1=0.666666,planvalue2=150.00, bal2=100.00, rate2=0.666666},
{planvalue1=150.00, org=310260, bal1=200.00, rate=1.333333,planvalue2=150.00, bal2=200.00, rate2=1.333333}]其实就是把第一个list的行转换成列,另外org列中的数据行数是不定的`
解决方案 »
- 一个JavaSE的题,大家进来看看
- ListSelectionListener为什么会捕获到两次事件?
- 散分了:改变图像的大小
- sQL语句不正确 哥哥们呀来呀
- 求驱动!JDBC for SQL Server 7.0!
- 请大家帮我看看这个文件操作是怎么回事?
- 如何把String 型2014-02-19转成时间格式再用after/before 与当前时间比较
- adjustmentEvent的 getValue()方法Not Found......
- 请问怎么向串口设备上送出一条中文信息?
- java后台进程的实现
- 讨论一下 java的内部类 和 C++的友元 有什么异同
- 下面这个设计怎么实现。关于各个连锁店的互联设计
然后把list遍历一篇,组合成你想要的list呗就可以啦
所以新的list中的对象属性应该以数组方式体现。
我做了一个转换的方法,虽然和楼主要的数据格式不同,但是应用起来应该是一样效果。前提旧的list中对象数据要先排好序按org,这个可以在SQL中控制。public class YourBean {
private double planvalue;
private int org;
private double bal;
private double rate;
public YourBean(double planvalue, int org, double bal, double rate)
{
this.planvalue = planvalue;
this.org = org;
this.bal = bal;
this.rate = rate;
}
public double getPlanvalue() {
return planvalue;
}
public void setPlanvalue(double planvalue) {
this.planvalue = planvalue;
}
public double getBal() {
return bal;
}
public void setBal(double bal) {
this.bal = bal;
}
public double getRate() {
return rate;
}
public void setRate(double rate) {
this.rate = rate;
} public int getOrg() {
return org;
} public void setOrg(int org) {
this.org = org;
}
}
public class NewBean {
private int org;
private String[] planvalue;
private String[] bal;
private String[] rate;
public NewBean(int org, String[] planvalue, String[] bal, String[] rate)
{
this.org = org;
this.planvalue = planvalue;
this.bal = bal;
this.rate = rate;
} public int getOrg() {
return org;
} public void setOrg(int org) {
this.org = org;
} public String[] getPlanvalue() {
return planvalue;
} public void setPlanvalue(String[] planvalue) {
this.planvalue = planvalue;
} public String[] getBal() {
return bal;
} public void setBal(String[] bal) {
this.bal = bal;
} public String[] getRate() {
return rate;
} public void setRate(String[] rate) {
this.rate = rate;
}
}
import java.util.ArrayList;
import java.util.List;
public class ConvertList {
public static List getNewList(List oldList)
{
List newList = new ArrayList();
StringBuffer sbplanvalue = new StringBuffer();
StringBuffer sbbal = new StringBuffer();
StringBuffer sbrate = new StringBuffer();
for(int i = 0; i < oldList.size(); i++)
{
YourBean yourBean = (YourBean)oldList.get(i);
int org = yourBean.getOrg();
double planvalue = yourBean.getPlanvalue();
double bal = yourBean.getBal();
double rate = yourBean.getRate();
int preOrg = 0;
if(i != 0)
{
preOrg = ((YourBean)oldList.get(i-1)).getOrg();
if(org == preOrg)
{
sbplanvalue.append(planvalue+",");
sbbal.append(bal+",");
sbrate.append(rate+",");
}else
{
NewBean newBean = new NewBean(preOrg, sbplanvalue.toString().split(","),
sbbal.toString().split(","), sbrate.toString().split(","));
newList.add(newBean);
sbplanvalue = new StringBuffer();
sbbal = new StringBuffer();
sbrate = new StringBuffer();
sbplanvalue.append(planvalue+",");
sbbal.append(bal+",");
sbrate.append(rate+",");
}
if(i == oldList.size()-1)
{
NewBean newBean = new NewBean(preOrg, sbplanvalue.toString().split(","),
sbbal.toString().split(","), sbrate.toString().split(","));
newList.add(newBean);
}
}else
{
sbplanvalue.append(planvalue+",");
sbbal.append(bal+",");
sbrate.append(rate+",");
}
}
return newList;
}
public static List getOldList()
{
List oldList = new ArrayList();
YourBean yourBean1 = new YourBean(150.00, 310240, 100.00, 0.666666);
YourBean yourBean2 = new YourBean(150.00, 310260, 100.00, 0.666666);
YourBean yourBean3 = new YourBean(150.00, 310240, 200.00, 1.333333);
YourBean yourBean4 = new YourBean(150.00, 310260, 200.00, 1.333333);
YourBean yourBean5 = new YourBean(150.00, 310260, 200.00, 2.333333);
YourBean yourBean6 = new YourBean(150.00, 310260, 200.00, 3.333333);
oldList.add(yourBean1);
oldList.add(yourBean3);
oldList.add(yourBean2);
oldList.add(yourBean4);
oldList.add(yourBean5);
oldList.add(yourBean6);
return oldList;
}
public static void main(String args[])
{
List oldList = getOldList();
List newList = getNewList(oldList);
System.out.println(newList.size());
}
}
楼主可以看下是否满足你的需求。
然后迭代
解析取出org 相同的列。然后把解析后的字符串合并。
放入新下的List
OK