读书人

相同的数据行和列合并。请诸位帮帮万

发布时间: 2012-02-21 16:26:23 作者: rapoo

相同的数据行和列合并。请诸位帮帮,万分感谢!
这是原有数据

要合并的数据

Java code
public class SpecMchnFloorEntity {        private Integer mchnId;        private Integer floorId;        private String stopType;        public void setMchnId(Integer mchnId) {        this.mchnId = mchnId;    }    public Integer getMchnId() {        return mchnId;    }    public void setFloorId(Integer floorId) {        this.floorId = floorId;    }    public Integer getFloorId() {        return floorId;    }    public void setStopType(String stopType) {        this.stopType = stopType;    }    public String getStopType() {        return stopType;    }}


Java code
public class SpecBankFloorEntity {        private Integer floorId;        private String floorName;        private List<SpecMchnFloorEntity> newSpecMchnFloorEntityList;        public void setFloorId(Integer floorId) {        this.floorId = floorId;    }    public Integer getFloorId() {        return floorId;    }    public void setFloorName(String floorName) {        this.floorName = floorName;    }    public String getFloorName() {        return floorName;    }    public void setNewSpecMchnFloorEntityList(            List<SpecMchnFloorEntity> newSpecMchnFloorEntityList) {        this.newSpecMchnFloorEntityList = newSpecMchnFloorEntityList;    }    public List<SpecMchnFloorEntity> getNewSpecMchnFloorEntityList() {        return newSpecMchnFloorEntityList;    }}

Java code
public class SpecMchnEntity {        private Integer mchnId;        private String mchnName;        public void setMchnId(Integer mchnId) {        this.mchnId = mchnId;    }    public Integer getMchnId() {        return mchnId;    }    public void setMchnName(String mchnName) {        this.mchnName = mchnName;    }    public String getMchnName() {        return mchnName;    }}

Java code
import java.util.ArrayList;import java.util.List;public class SpecTest {                public static void main(String[] args) {        List<SpecMchnEntity> specMchnEntityList = setSpecMchnEntity();        for (SpecMchnEntity specMchnEntity : specMchnEntityList) {            System.out.print("    " + specMchnEntity.getMchnName() + "  ");        }        System.out.println();        List<SpecBankFloorEntity> SpecBankFloorEntityList = setSpecMchnFloorEntity();        for (SpecBankFloorEntity specBankFloorEntity : SpecBankFloorEntityList) {            List<SpecMchnFloorEntity> specMchnFloorEntityList = specBankFloorEntity.getNewSpecMchnFloorEntityList();            System.out.print(specBankFloorEntity.getFloorName());            for (SpecMchnFloorEntity specMchnFloorEntity : specMchnFloorEntityList) {                System.out.print("   " + specMchnFloorEntity.getStopType() + "    ");            }            System.out.println();        }    }        private static List<SpecMchnEntity> setSpecMchnEntity() {        List<SpecMchnEntity> specMchnEntityList = new ArrayList<SpecMchnEntity>();        SpecMchnEntity s = new SpecMchnEntity();        s.setMchnName("01");        specMchnEntityList.add(s);        s = new SpecMchnEntity();        s.setMchnName("02");        specMchnEntityList.add(s);        s = new SpecMchnEntity();        s.setMchnName("03");        specMchnEntityList.add(s);        return specMchnEntityList;    }        private static List<SpecBankFloorEntity> setSpecMchnFloorEntity() {        List<SpecBankFloorEntity> specMchnFloorEntityList = new ArrayList<SpecBankFloorEntity>();                SpecBankFloorEntity sbf = new SpecBankFloorEntity();        sbf.setFloorName("18");        List<SpecMchnFloorEntity> newSpecMchnFloorEntityList = new ArrayList<SpecMchnFloorEntity>();         SpecMchnFloorEntity smf = new SpecMchnFloorEntity();        smf.setStopType("1");        newSpecMchnFloorEntityList.add(smf);        smf = new SpecMchnFloorEntity();        smf.setStopType("3");        newSpecMchnFloorEntityList.add(smf);        smf = new SpecMchnFloorEntity();        smf.setStopType("4");        newSpecMchnFloorEntityList.add(smf);        sbf.setNewSpecMchnFloorEntityList(newSpecMchnFloorEntityList);        specMchnFloorEntityList.add(sbf);                sbf = new SpecBankFloorEntity();        sbf.setFloorName("17");        newSpecMchnFloorEntityList = new ArrayList<SpecMchnFloorEntity>();         smf = new SpecMchnFloorEntity();        smf.setStopType("2");        newSpecMchnFloorEntityList.add(smf);        smf = new SpecMchnFloorEntity();        smf.setStopType("3");        newSpecMchnFloorEntityList.add(smf);        smf = new SpecMchnFloorEntity();        smf.setStopType("4");        newSpecMchnFloorEntityList.add(smf);        sbf.setNewSpecMchnFloorEntityList(newSpecMchnFloorEntityList);        specMchnFloorEntityList.add(sbf);                sbf = new SpecBankFloorEntity();        sbf.setFloorName("16");        newSpecMchnFloorEntityList = new ArrayList<SpecMchnFloorEntity>();         smf = new SpecMchnFloorEntity();        smf.setStopType("3");        newSpecMchnFloorEntityList.add(smf);        smf = new SpecMchnFloorEntity();        smf.setStopType("3");        newSpecMchnFloorEntityList.add(smf);        smf = new SpecMchnFloorEntity();        smf.setStopType("4");        newSpecMchnFloorEntityList.add(smf);        sbf.setNewSpecMchnFloorEntityList(newSpecMchnFloorEntityList);        specMchnFloorEntityList.add(sbf);                sbf = new SpecBankFloorEntity();        sbf.setFloorName("15");        newSpecMchnFloorEntityList = new ArrayList<SpecMchnFloorEntity>();         smf = new SpecMchnFloorEntity();        smf.setStopType("3");        newSpecMchnFloorEntityList.add(smf);        smf = new SpecMchnFloorEntity();        smf.setStopType("3");        newSpecMchnFloorEntityList.add(smf);        smf = new SpecMchnFloorEntity();        smf.setStopType("4");        newSpecMchnFloorEntityList.add(smf);        sbf.setNewSpecMchnFloorEntityList(newSpecMchnFloorEntityList);        specMchnFloorEntityList.add(sbf);                return specMchnFloorEntityList;            }} 


小弟算法实在太差,想了一早上也没有想到好的思路。数据已经造好了,还请大家帮帮,谢谢!


[解决办法]
这是什么需求?都用了数据库了,那合并列太容易了,直接distinct就可以,
[解决办法]
回2L,distinct是合并了相同列,LZ要得是合并相邻的相同列,并且把编号累计起来


[解决办法]
我觉得可以实现这样一个数据结构:
1,类似于栈,先进后出
2,每次压栈的时候,如果发现栈顶的元素与将压入的元素相同,则放弃压入,并将列号合并一次,赋给栈顶的元素,如果不同,则先将栈顶元素取出,再进行步骤2
3,每次出栈的元素,放入到队列中,最后一次便利一次就行了

如果不用考虑相邻的关系,用Map,以元素为key,编号为value,每次发现有相同的key,合并value,最后遍历一下就好了。
[解决办法]
先扫描,再显示
1. 每一行放在一个List中
2. 用一个Map存储表示行的List和他对应的夸行数
3. 每一行和上一行进行比较,如果相同,则在Map中存储的行的夸行数加1
4. 显示时从Map中拿出行与它对应的夸行数来显示 (你要想办法保存这些行的顺序)
[解决办法]
恩 用map 存储数据 并判断是否重复 然后记录重复出现的ID
[解决办法]
直接用HashSet不就好了,都不需要做判断的,set中不可能有相同数据的。
[解决办法]
我有个思路:
每一列都单独使用一个List存储所有的数据,用一个List<List>存储整张表,如果记录相同,那么list对象也会相等,用一个if语句判断是否相等,如果相等,则不添加进List<List>

或者可以使用合并的方式,如使用一个Holder类对象存储一个列的所有数据,整张表使用List<Holder>存储。如果记录相同,那么holder类对象也会相等,那么则不添加进List<Holder>
[解决办法]
先合并行,再合并列
4楼和8楼合起来就可以了
[解决办法]
如果是数据库的话,就是GROUP BY,左面第一个字段类似MySQL 的GROUP_CONCAT()
[解决办法]
不行可以硬编码搞定 列数会改变不

读书人网 >J2SE开发

热点推荐