Map.Entry<> java
Map.Entry<> java
我对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
- 在java中解决这段代码时面临循环中的问题
- 尝试用java代码编译和运行c++代码
- EASTL矢量<向量<int>>连续的
- 在这种情况下,java对象是否可以调用本机函数
- 在java中读取c++字节的位字段
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 使用已使用 java 编码的 openssl 解码数据
- SWIG Java 在使用 -DSWIGWORDSIZE64 时将int64_t转换为 jlong
- Android Java USB for native cpp
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- C++ equivalent to Java Map getOrDefault?
- C++ 中的 Java 样式枚举
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- 加密在 Windows、C++ 和 Java 中传输中的数据
- Java从C++回调到C++回调
- 在 c++ 中模拟输入并在 JAVA 中读取它?
- 用C++包装 Java 库 (JNI)
- 使用 TreeSet Java 对反转进行计数
- 验证openssl c++中的签名,这是由JAVA DSA签名的?
- 如何通过 JNI 将 C 字符串表情符号传递给 Java