我在Object的2d数组中有数据,我正在寻找一种合并重复数据的算法,但是我的算法失去了重复的数据。此外,它将所有行保持在顶部,因此,我的数据是:
ECE 201电气和计算机工程I 2.6666666666666665生物101生物学I2.0 CS 101计算机科学I 3.5 AE 101航空航天工程I2.5 BE 101生物医学工程I2.0 CS 101计算机科学I2.0 CS 102计算机科学II 3.0 BE 100简介生物医学工程3.6 欧洲经委会200简介电气和计算机工程3.5 生物100简介生物学2.2 CS 101计算机科学I 3.75 AE 101航空航天工程I 1.6666666666666667 BE 100生物医学工程简介1.2
但是它包含了null,我使用了以下算法:
for (int i = 0; i< finalData.length; i++)
{
if (finalData[i][1] != null)
{
String first = (String)finalData[i][1];
for (int j = i; j< finalData.length; j++)
{
if (finalData[j][1]!= null)
{
String second = (String)finalData[j][1];
if (first.equals(second))
{
double one = (double)finalData[i][6];
double two = (double)finalData[i][6];
finalData[i][7] = (one + two)/2;
System.out.println("found!\t" + first + "\t" + second + "\t" + finalData[i][7]);
}
}
}
}
}我的数据是:
找到了!欧洲经委会201欧洲经委会201 2.6666666666666665 找到了!BIO 101 BIO 101 2.0 找到了!CS 101 CS 101 3.5 找到了!CS 101 CS 101 3.5 找到了!CS 101 CS 101 3.5 找到了!AE 101 AE 101 2.5 找到了!AE 101 AE 101 2.5 找到了!是101等于101 2.0 找到了!CS 101 CS 101 2.0 找到了!CS 101 CS 101 2.0 找到了!CS 102 CS 102 3.0 找到了!100等于100 3.6 找到了!100等于100 3.6 找到了!欧洲经委会200 找到了!BIO 100生物100 2.2 找到了!CS 101 CS 101 3.75 找到了!AE 101 AE 101 1.6666666666666667 找到了!是100等于100 1.2
//被发现的!只是为了确保它是正确的输出。
如何改进该算法以产生所需的结果?
发布于 2012-12-05 15:21:14
与编写算法不同,您可以使用集合或哈希表。
集合是您更好的选择;它们不允许重复。你可以在这里读到更多关于他们的信息:http://docs.oracle.com/javase/tutorial/collections/interfaces/set.html
哈希表是实现集合的一种方法。要使用这些,您需要编写一个散列函数来将数据转换为散列键,然后使用该键对表进行索引,并将未散列的值存储在那里。
https://stackoverflow.com/questions/13726384
复制相似问题