-5

我有一个与下面非常相似的对象表,每个对象有 4 列AB C并且D.

A        B               C              D
---------------------------------------------------
Jan-13  AIR SHOPPING    TPF SCIPS   61
Feb-13  AIR SHOPPING    TPF SCIPS   81
Mar-13  AIR SHOPPING    TPF SCIPS   147
Jan-13  AVAILABILITY    TPF SCIPS   17007
Feb-13  AVAILABILITY    TPF SCIPS   1845
Mar-13  AVAILABILITY    TPF SCIPS   2297 
Jan-13  CONNECTIVITY    TPF SCIPS   1240
Feb-13  CONNECTIVITY    TPF SCIPS   1080
Mar-13  CONNECTIVITY    TPF SCIPS   1864

从上表中,我需要根据 B 列创建不同的表。即我需要创建具有相同 B 列值的对象表。最后,对于上表,我需要创建 3 个不同的表。

表格1

A        B               C              D
---------------------------------------------------
Jan-13  AIR SHOPPING    TPF SCIPS   61
Feb-13  AIR SHOPPING    TPF SCIPS   81
Mar-13  AIR SHOPPING    TPF SCIPS   147

表 2

A        B               C              D
---------------------------------------------------
Jan-13  AVAILABILITY    TPF SCIPS   17007
Feb-13  AVAILABILITY    TPF SCIPS   1845
Mar-13  AVAILABILITY    TPF SCIPS   2297 

表3

A        B               C              D
---------------------------------------------------
Jan-13  CONNECTIVITY    TPF SCIPS   1240
Feb-13  CONNECTIVITY    TPF SCIPS   1080
Mar-13  CONNECTIVITY    TPF SCIPS   1864

实现这一目标的最佳方法是什么?

提前致谢

4

3 回答 3

2

最简单的方法是首先制作地图,因为您可能正在执行分配,这意味着循环遍历列表,将每个项目添加到地图中,其中键是 b 列中的值,然后值是列表给定项目将被添加到其中。仔细检查列表是否尚未初始化。然后,您可以遍历地图并轻松转储每个单独的列表。

于 2013-09-19T06:06:06.893 回答
0
    List<Objname> list=new ArrayList<>();
    //add data to list

    Map<String,List<Objname>> map=new HashMap<>(); 

    for(Objname o:list)
    {
            if(map.keySet().contains(o.getB()))
                map.get(o.getB()).add(o);
            else
            {
                List<Objname> temp=new ArrayList<Objname>();
                temp.add(o);
                map.put(o.getB(),temp);
            }
    }
于 2013-09-19T06:44:02.227 回答
0

好吧,假设在这个例子中你有一个你自己的类的 ArrayList(我们称之为 Row),我会这样做:

ArrayList<Row> bigList = new ArrayList<Row>();
//Insert all data
//...
Iterator i = bigList.iterator();
ArrayList<Row> listA = new ArrayList<Row>();
ArrayList<Row> listB = new ArrayList<Row>();
ArrayList<Row> listC = new ArrayList<Row>();
while(i.hasNext()){
  Row now = i.next();
  switch(now.getColumnB()){
    case "AIR SHOPPING":
      listA.add(now);
      break;
    case "AVAILABILITY":
      listB.add(now);
      break;
    case "CONNECTIVITY":
      listC.add(now);
      break;
  }
}
//And at this point you should have your lists

好吧,我只是猜想你有一个可迭代的列表并且你有自己的行对象,但如果你没有,你可能有一个array[]充满Strings 的过程应该不会有太大的不同。

于 2013-09-19T06:12:34.160 回答