我有一个与下面非常类似的对象表,每个对象有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
table-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
实现这一目标的最佳方法是什么?
提前致谢
答案 0 :(得分:2)
最简单的方法是首先制作地图,因为你可能正在做一个分配,这意味着循环遍历列表,将每个项目添加到地图中,其中键是列b中的值,然后是值是要添加给定项目的列表。小心检查列表是否尚未初始化。然后,您可以循环遍历地图并轻松转储每个列表。
答案 1 :(得分: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[]
并且有String
个过程就不应该'与众不同。
答案 2 :(得分: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);
}
}