-1

JTable以下内容

Col1  |  Col2
A     |  1
A     |  2
A     |  3
B     |  5
B     |  1
C     |  5
C     |  4
C     |  2

基于这个表,我需要创建一个HashMap numbers:第 1 列是指键,第 2 列是指数据。

下面我提供我的代码片段。问题是:有没有更快的方法来创建提到的 HashMap?

HashMap numbers = new HashMap<String, List<String>>();

for (int i=0; i<tbNumbers.getRowCount(); i++) 
{
    col1 = mdNumbers.getValueAt(i,0).toString();
    col2Array = new ArrayList<String>();

    for (int j=0; j<tbNumbers.getRowCount(); j++) 
    {
      if (mdNumbers.getValueAt(j,0).toString() == col1)
      {
        col2Array.add(mdNumbers.getValueAt(j,1).toString());
      }
    }

    numbers.put(col1, col2Array);

}
4

2 回答 2

1

是的,也许让 HashMap 完成工作,而不是使用嵌套循环。

HashMap numbers = new HashMap<String, List<String>>();
List col2Array=null;
for (int i=0; i<tbNumbers.getRowCount(); i++) 
{
    col1 = mdNumbers.getValueAt(i,0).toString();
    col2Array = numbers.get(col1);
    if(col2Array==null){
        col2Array=new ArrayList<String>();
        numbers.put(col1,col2Array);
   }
    col2Array.add(mdNumbers.getValueAt(i,1).toString());
}
于 2013-06-20T11:25:42.617 回答
1

如果你有几个 c0l1 相同的 col2 值,你可以改进一点你的算法:

HashMap numbers = new HashMap<String, List<String>>();

for (int i=0; i<tbNumbers.getRowCount(); i++) 
{
    col1 = mdNumbers.getValueAt(i,0).toString();
    List col2Array=null;

    col2Array = numbers.get(col1);
    if (col2Array==null) {
       col2Array=new ArrayList<String>();
    }
    col2Array.add(mdNumbers.getValueAt(j,1).toString());
}
于 2013-06-20T11:29:28.560 回答