Map.Entry<> java

Map.Entry<> java

本文关键字:gt java lt Entry Map      更新时间:2023-10-16

我对java一无所知,但我在java中找到了这个区块链指南,我一直在尝试理解和转换C++中的代码(我的事情)。到目前为止我做得很好,但我被困在这里了。我无法理解loop和Map。条目<>事情任何形式的帮助都将不胜感激。

我也是区块链的新手。本指南的链接为:https://medium.com/programmers-blockchain/creating-your-first-blockchain-with-java-part-2-transactions-2cdac335e0ce

如果有帮助的话。

这是代码:

public class Wallet {
public PrivateKey privateKey;
public PublicKey publicKey; 
public HashMap<String,TransactionOutput> UTXOs = new HashMap<String,TransactionOutput>();
public float getBalance() {
float total = 0;    
for (Map.Entry<String, TransactionOutput> item: NoobChain.UTXOs.entrySet()){
TransactionOutput UTXO = item.getValue();
if(UTXO.isMine(publicKey)) { //if output belongs to me ( if coins belong to me )
UTXOs.put(UTXO.id,UTXO); //add it to our list of unspent transactions.
total += UTXO.value ; 
}
}  
return total;
}

我无法理解循环的作用。如果有人能提供一个更简单的C++版本的话。

与其只提供一个C++代码,不如让我来解释一下:在java中,有一种称为Maps的数据结构,它包含键值对(您可能猜到这一部分)。Map本身是不可迭代的,因此为了在映射中循环,您可以在其所有键(也称为键集)、所有值或所有键值对(也称为Entry集)中循环。后者发生在您的示例中。因此,在您的示例中,您有一个String(键)和TransactionOutput对象(值)的映射。for在这些对中循环,每个对都存储在变量项中。然后,从作为TransactionOutput对象的键值对(项)中提取值部分。然后使用方法isMine()验证此对象,如果为true,则将其添加到另一个映射Strings(键)到TransactionOutput对象的Map(称为UTXOs)中。在这种情况下,字符串(映射中的键)似乎是TransactionObject的id。变量总数会随着添加的TrasactionOutput的值而增加。

旁注:这个for循环也可以只循环映射中的所有值,因为键从未在这个特定的循环中使用过。

现在,换言之,为了解释这一点,它正在遍历TransactionOutput的映射,属于"me"的那些被放在一个单独的映射中,并且返回属于"我"的TrasactionOutput值的总量。

希望这能澄清一切!祝你好运Teo