我想将字符串数组哈希为一个哈希,如下图所示。但是我不想实现一些基于类的merkle树。这只是一个简单的功能。这是一个好的实现还是有任何可能的改进?
public static String hashStrings(@NotNull String [] strs)
{
if (strs.length == 1) return hashString(strs[0]);
List<String> hashes = new ArrayList<>();
for (int i = 0; i < strs.length; i++)
{
hashes.add(hashString(strs[i]));
}
int currentSize, nextSize;
while(hashes.size() > 1)
{
currentSize = hashes.size();
nextSize = currentSize % 2 == 0 ? currentSize / 2 : (currentSize + 1) / 2;
for (int i = 0; i < currentSize - 1; i += 2)
{
hashes.set(i / 2, hashString(hashes.get(i) + hashes.get(i + 1)));
}
if (currentSize % 2 == 1)
{
hashes.set(nextSize - 1, hashString(hashes.get(currentSize - 1)));
}
hashes = hashes.subList(0, nextSize);
}
return hashes.get(0);
}