[英]Map.Entry<> java
我對Java一無所知,但是我在Java中找到了這個區塊鏈指南,並且我一直試圖理解和轉換C ++中的代碼(我的事情)。 到目前為止,我的表現不錯,但是我被困在這里。 我無法理解循環和Map.Entry <>的東西。 任何幫助都將受到贊賞。
而且我還是區塊鏈新手。 本指南的鏈接為: 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;
}
這個for循環的功能超出了我的范圍。 如果有人可以提供此循環的簡單C ++版本。
讓我嘗試解釋一下這個問題,而不僅僅是提供一個C ++代碼:在Java中,有一種稱為Maps的數據結構,其中包含鍵/值對(您可能會猜到這部分)。 Map本身是不可迭代的,因此要遍歷Map,您可以遍歷其所有鍵(也稱為鍵集),所有值或所有鍵-值對(也稱為Entry集)。 后者發生在您的示例中。 因此,在您的示例中,您具有String(鍵)和TransactionOutput對象(值)的映射。 for,在這些對之間循環,每對存儲在變量項中。 然后,從作為TransactionOutput對象的鍵值對(項目)中提取值部分。 然后使用isMine()方法驗證該對象,如果為true,則將其添加到另一個將Strings(鍵)映射到TransactionOutput對象的Map(稱為UTXO)。 在這種情況下,字符串(映射中的鍵)似乎是TransactionObject的ID。 變量total增加了所添加的TrasactionOutput的值。
旁注:該for循環也可能只循環遍歷映射中的所有值,因為在此特定循環中從未使用過鍵。
現在,換句話說,它正在遍歷TransactionOutputs的映射,將屬於“ me”的映射放在一個單獨的映射中,並返回屬於“ me”的TrasactionOutput值的總量。
希望這可以清除一切! 祝你好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.