Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要从一个大表创建几个较小的表_Java_List - Fatal编程技术网

Java 需要从一个大表创建几个较小的表

Java 需要从一个大表创建几个较小的表,java,list,Java,List,我有一个非常类似于下面的对象表,每个对象有4列a,BC和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

我有一个非常类似于下面的对象表,每个对象有4列
a
B
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
实现这一目标的最佳方式是什么


提前感谢

最简单的方法是首先制作一张地图,因为您可能正在做作业,这意味着在列表中循环,将每个项目添加到地图中,其中键是b列中的值,然后该值是要添加给定项目的列表。请仔细检查列表是否尚未初始化。然后,您可以在映射中循环并非常轻松地转储每个单独的列表。

好吧,在本例中,假设您有自己类的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
ArrayList bigList=new ArrayList();
//插入所有数据
//...
迭代器i=bigList.Iterator();
ArrayList listA=新的ArrayList();
ArrayList listB=新的ArrayList();
ArrayList listC=新的ArrayList();
while(i.hasNext()){
Row now=i.next();
开关(现在是.getColumnB()){
案例“空中购物”:
添加(现在);
打破
案例“可用性”:
列表b.add(现在);
打破
案例“连通性”:
listC.add(现在);
打破
}
}
//在这一点上,你应该有你的清单
我猜你有一个iterable列表,你有自己的row对象,但是如果你没有,你可能有一个
数组[]
和一个充满
字符串的
,这个过程应该不会有太大的不同;
    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);
            }
    }
//将数据添加到列表中 Map Map=newhashmap(); for(对象名o:list) { if(map.keySet().contains(o.getB())) get(o.getB()).add(o); 其他的 { List temp=new ArrayList(); 温度添加(o); map.put(o.getB(),temp); } }
你试过2D arraList吗?
开关/case
在JDK 6和更低版本中不能使用
字符串
s如果(…){}如果(…){}如果(…){如果(…){其他{}
如果你不能使用开关,你可以随时使用
如果(…){如果(…){…其他{}如果你想用多少次,谢谢你的回复。。我正在使用Java6。我用MapThank实现了这一目标。你让我的工作很容易得到回应。我得到了一些你的解释代码,使我的工作更容易:)