需要将结果集转换为某种数据结构

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 中的特定项目相对应的所有项目。

例如,如果我为 ColB 中的值 2 请求 ColD 中的所有项目,我应该得到 [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(由 space 分隔).

每当用户询问特定列的列值时,我都会相应地匹配并给他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);
}