如果值重复,则以单行显示数据库表中的数据

时间:2012-08-19 20:56:56

标签: java

我查询了多个表,我正在获取数据。现在我想以表格形式显示数据,这样如果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     

1 个答案:

答案 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'。