我查询了多个表,我正在获取数据。现在我想以表格形式显示数据,这样如果Ids重复,它将只是单行。
我查询了
Query "select a.id,b.status from A a,B b
List li = data from query;
Iterator iterator = li.iterator();
while(iterator.hasNext()){
System.out.println(id+"-"+status)
}
我正在获取数据,
**id status**
10 G1
10 G2
10 G3
15 G1
16
17 G1
17 G2
现在我想把它显示如下(例如10重复3次,所以我想要显示单行3个等级,15个一次,16个没有等级,17个等级两次)
id statusfirst statussecond statusthird
10 G1 G2 G3
15 G1 NA NA
16 NA NA NA
17 G1 G2 Na
答案 0 :(得分:1)
您可以使用LinkedHashMap完成此类分类,并保持ID顺序。
请在下面找到源代码示例:
// put this line outside the loop of ids and statuses
// In case your ids are Integers change the LinkedHashMap<String, String> to LinkedHashMap<Integer, String>.
LinkedHashMap<String, ArrayList<String>> lh = new LinkedHashMap<String, ArrayList<String>>();
String id = "1";
String status = "G1";
// put the below lines in the loop of ids and sstatuses
if (id != null && !"".equals(id.trim())) {
if (!lh.containsKey(id)) {
final ArrayList<String> al = new ArrayList<String>();
al.add(status);
lh.put(id, al);
} else {
lh.get(id).add(status);
}
}
Iterator<String> lhIter = lh.keySet().iterator();
while (lhIter.hasNext()) {
final String thisId = lhIter.next();
final ArrayList<String> statusesAL = lh.get(thisId);
final StringBuilder strB = new StringBuilder();
strB.append("id: '").append(thisId).append("'");
int i = 0;
for (String s : statusesAL) {
strB.append(" status[").append(i).append("]: '").append(s).append("'");
i++;
}
System.out.println(strB.toString());
}
输出如下所示:id:'1'status [0]:'G1'。
如果id的状态更多,则输出将如下所示:id:'1'status [0]:'G1'status [1]:'G2'。