簡體   English   中英

Map.Entry <> Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM