weixin_42348874 2009-11-14 22:04
浏览 229
已采纳

一个关于java对象在hashmap里比较的问题 搞了好久

现在从数据库中取出所有的索引,因为是oracle,用DatabaseMetaData的getIndexInfo方法。

比如说 第6(索引名)、8(序列号)、9(列名称),联合索引第6列相同的,第8、9都不一样。

我目前把联合索引取出来,得到一个ResultSet对象 ,而这个ResultSet不是每个索引一行数据,而是每个索引的每个字段一行。

现在我的问题是:

如何循环将同是一个索引的不同字段(也就是索引名相同而,序列号和列名称不同)取出来放在一个list里。

也就是如何判断两行ResultSet是同一个联合索引的字段

目前的方法是使用HASH对键进行映射的数据存储类

public class SimpleHashList
{
private Map > dataMap = new HashMap >();

public void put(String key, Object value) 
{ 
    List <Object> valList = dataMap.get(key); 
    if (valList == null) 
    { 
        valList = new ArrayList <Object>(); 
    } 

    valList.add(value); 
    dataMap.put(valList); 

} 


public List <Object> get(String key) 
{ 
    return dataMap.get(key); 
} 

public Map <String, List <Object>> getDataMap() 
{ 

    return dataMap; 
} 

}

实现中出现的问题:

while (rs.next()) {
String INDEX_NAME = indexResultSet.getString("INDEX_NAME");
index.setName(INDEX_NAME );
index.setMColumnStr(COLUMN_NAME);
System.out.println("COLUMN_NAME="+COLUMN_NAME);
hashList.put(INDEX_NAME, index);
}
aMap =hashList.getDataMap();
Iterator keys=aMap.keySet().iterator();
while (keys.hasNext()) {
String indexName = (String) keys.next();
System.out.println("indexName="+indexName);
List indexList=aMap.get(indexName);
for (int i = 0; i < indexList.size(); i++) {
Index index1 = indexList.get(i);
//if(i==index1.getSeq())
System.out.println("字段名="+index1.getMColumnStr());
}
}

打印输出是

COLUMN_NAME=SEQ
COLUMN_NAME=SHORT_NAME
COLUMN_NAME=ROLE_ID
COLUMN_NAME=LEVELS
COLUMN_NAME=ROLE_ID
COLUMN_NAME=ROLE_CODE

indexName=ONE_INDEX_CARROT
字段名=ROLE_CODE
indexName=UNION_INDEX_CARO
字段名=ROLE_CODE
字段名=ROLE_CODE
字段名=ROLE_CODE
indexName=UNION_INDEX_CARROT
字段名=ROLE_CODE
字段名=ROLE_CODE

字段输入的时候还是正确的COLUMN_NAME,输出“字段名”就全一样了,都是最后一个

  • 写回答

1条回答 默认 最新

  • badonly 2009-11-15 00:19
    关注

    index在循环里面new,Map里存的是index的引用! 你只声明了一个引用--index,而且对象也只只有一个!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?