![](/img/trans.png)
[英]convert a result set with flat column structure into hierarchical data structure
[英]Need to convert a Result Set to some data structure
我有一個像這樣的java.sql.ResultSet:
=============================
| colA | ColB | ColC | ColD |
=============================
| 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 2 |
| 1 | 1 | 2 | 3 |
| 1 | 1 | 2 | 4 |
| 1 | 2 | 3 | 5 |
| 1 | 2 | 4 | 6 |
| 1 | 2 | 4 | 7 |
| 1 | 2 | 4 | 8 |
| 1 | 3 | 5 | 9 |
| 1 | 3 | 6 | 10 |
=============================
第一列將始終具有單個值。 最后一列將始終是唯一的。
我需要一個實現,我想在ColD中檢索與ColB或ColC或ColA中的特定項目相對應的所有項目。
例如,如果我請求ColD中ColB中值為2的所有項目,我應該得到[5,6,7,8](作為列表或數組)。
我想知道樹實現是否是解決此問題的正確方法。
最好的實現方式是什么? 提前致謝。
Select colD from tableName where colB='2';
以上查詢不夠嗎?
更新資料
如果您需要在Java中完成此操作,則:
ResultSet rs=getAllDataInResultSet();//this method will return from stored procedure
List<int> resultList=new ArrayList<>();
while(rs.next()){
int colB=rs.getInt(2);
if(colB==2){
resultList.add(rs.getInt(4));
}
}
logger.debug(resultList); //logging the final Result list
輸出:
[5,6,7,8]
這只是一個簡單的技巧,我將擁有一個HashMap,其keys
為column4
,其值作為column1 column2 column 3
(以空格分隔)。
每當用戶要求特定列的列值時,我都會進行相應匹配並將keys
給他。
HashMap hm = new HashMap();
String query = "select * from emp;";
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
{
hm.put(rs.getString(4), rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
int fromCol = 2;
int colVal = 4;
List arr = new ArrayList();
Iterator it = hm.entrySet().iterator();
while (it.hasNext())
{
Map.Entry pair = (Map.Entry)it.next();
String key = pair.getKey().toString();
String value = pair.getValue().toString();
String []tokens = value.split(" ");
if(tokens[fromCol - 1] .equals( colVal+""))
arr.add(key);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.