我的代码:
public List resultSetToArrayList(ResultSet rs) throws SQLException{
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
ArrayList list = new ArrayList(50);
while (rs.next()){
HashMap row = new HashMap(columns);
for(int i=1; i<=columns; ++i){
row.put(md.getColumnName(i),rs.getObject(i));
}
list.add(row);
}
return list;
}
所以我返回了包含Key和Value对的列表。在我的客户端逻辑中,我必须获取列表并将每个hashMap中的键值与Text进行比较。
我们怎么能这样做?请帮助我。
提前致谢
答案 0 :(得分:0)
如果您的问题是原始类型List
,,您不应该使用,那么您必须将行转换为HashMap<String,Object>
:
HashMap<String,Object> row = (HashMap<String,Object>) list.get(rowNum);
然后获取列名:
Set<String> columns = row.keySet();
价值观:
Object value = row.get(columnName);
编辑:根据您的评论,您似乎需要一列作为键,另一列作为值。因此,当您创建HashMap
时,不应使用getColumnName
作为键,而应使用该列的值:
ArrayList list = new ArrayList(50);
while (rs.next()){
HashMap row = new HashMap(columns);
row.put(rs.getObject(0),rs.getObject(1));
list.add(row);
}
警告:我不知道你想对此做些什么,但这很奇怪,因为你只有HashMap
行中的一个键和一个值。您可能希望使用包含所有行的单个HashMap
(并删除List
):
HashMap<String,String> table = new HashMap<String,String>();
while (rs.next()){
table.put(rs.getString(0),rs.getString(1));
}
如果您事先不知道密钥将在第0列中,并且值将在第1列中,但您知道列的名称,那么您可以遍历列以查找列的索引一个名字正确。
String keyColumnName = "FROM";
int keyColumnNum = -1; // to be found
for (int i = 0; i < md.getColumnCount(); i++) {
if (keyColumnName.equals.getColumnName(i)) {
keyColumnNum = i;
break;
}
}
// if the column exists, keyColumnNum has the right value here
答案 1 :(得分:0)
首先,你不应该使用原始类型。将代码修改为类似的内容:
public List<Map<String, Object>> resultSetToArrayList(ResultSet rs) throws SQLException {
final ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
final List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(50);
while (rs.next()) {
final HashMap<String, Object> row = new HashMap<String, Object>(columns);
for (int i = 1; i <= columns; ++i) {
row.put(md.getColumnName(i), rs.getObject(i));
}
list.add(row);
}
return list;
}
比你可以访问你的列表:
List<Map<String, Object>> list = yourObject.resultSetToArrayList(rs);
for (Map<String, Object> map : list) {
//you can call map.get("yourkey") here
}