有一个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列中的数据行数是不定的`

解决方案 »

  1.   

    定一个数组A【list.size()】【4】
    然后把list遍历一篇,组合成你想要的list呗就可以啦
      

  2.   

    根据楼主的需求,org列中的数据行数是不定的,也就是说对应相同的org可能有不同行数的记录,那么新的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());
    }

    }
    楼主可以看下是否满足你的需求。
      

  3.   

    用迭代器遍历下list,再覆盖下toString()方法就可以了呀...
      

  4.   

    把数据按字符串放入List
    然后迭代
    解析取出org 相同的列。然后把解析后的字符串合并。
    放入新下的List
    OK
      

  5.   

    如果你这个是 toString 出来的值.这种转换是没有办法进行的, List原来的类型比如是ClassA.A有三个成员而要转换成的 List 则是ClassB,里面有六个成员,只不过和ClassA中的重复.