有以下内容的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);
}
是的,也许让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());
}
如果多个col1的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());
}