2015-06-04 97 views
0

我有一个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 | 
============================= 

第一列总会有一个值。最后一列将始终是唯一的。

我需要,我想检索所有在寒冷中对应于COLB或COLC或可乐特定项目的项目的实施。

,例如,如果我请求的所有项目在冷为值2在COLB,我应该得到[5,6,7,8](作为列表或阵列)。

我在想如果一个树实现将是一个正确的方式去做这件事。

什么是最好的方法来完成?提前致谢。

+4

为什么不改变你的查询来检索你所需要的而不是用代码来做:'SELECT COLD FROM your_table WHERE ColB = 2'? – assylias

+0

它不是一张桌子。它是存储过程的结果。我不知道ColB,ColC和ColD的价值是什么。编辑存储的proc不是一个选项。 –

回答

0
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] 
+0

@Shailendrsingh为什么它不会工作,请提供给我的理由,这样我可以即兴我的答案:) –

+0

@Shailendrsingh,兄弟我请你,请都要经过这条线OP的帖子再次 ***举例来说,如果我在'ColB'中请求'ColD'中的所有项目的值为'2' *** –

+0

对不起,你是对的。 –

0

这只是一个短暂的把戏,我将有一个带有keys的HashMap作为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); 
} 
+0

好戏。但我必须对数据进行其他几项操作。所以我最终建了一棵树。 –

+0

@MuneerHudha不是问题,它让我想到了。 :) –

相关问题