java - 需要 Java 传递对象方面的帮助

标签 java

更新: 我修改了hashCode,现在好一点了。 :) 但问题仍然存在... :(

所以,也修改了我的方法:

private Node getMinNode()
{

    int min = 9999999;   //value
    Node minNode = new Node(); //key,index

    for (Node key : this.distances.keySet()) {

        int minOfNode= this.distances.get(key);

        System.out.println("Key "+ key +", Value = " + minOfNode);

        if(minOfNode<min)
        {
           min= minOfNode;
           minNode= key;
           System.out.println("Key minNode = " + minNode + ", Value minNode = " + minOfNode);

        }
    }

    return minNode;

} 

并且有输出:(行中的空格(,,)将是一个空字符)这不是结束...这只是前几行...

   Key 66601, 3546492, 3546493, 228, f, Value = 9999999
   Key 77393, 3628185, 3628186, 64, t, Value = 9999999
   Key 0, 0, 0, 0, , Value = 0 
   Key minNode = 0, 0, 0, 0, , Value minNode = 0
   Key 66601, 3546492, 3546493, 228, f, Value = 9999999 
   Key 77393, 3628185, 3628186, 64, t, Value = 9999999 

(注意:'Key 0, 0, 0, 0, , Value = 0'的元素确实存在,这是startNode) 在该构造函数中,属性是用零初始化的,我知道, 所以我的主要问题是,为什么会发生这种情况?它们是从 if() 中传递出来的,但在 if() 中它们不是 我希望我的问题更清楚。 :)

最佳答案

首先,存储 min 和 minNode - 不是很好的做法,它们不是必需的。
接下来,将整个 Map 传递给方法比使用全局变量更好(当然,如果你真的不需要它)
Map.keySet() - 返回一个键列表,似乎你需要 Map.getEntrySet() 方法来检索所有“节点”(在通常的 Map 中它们被称为 Entry)

你的代码应该是这样的:

    private Map.Entry getMinNode(Map<String, Integer> distances) {
    Map.Entry minNode = null;

    for (Map.Entry node : distances.entrySet()) {
        System.out.println("Key = " + node.getKey()+ ", Value = " + node.getValue());

        if (minNode == null || node.getValue() < minNode.getValue()) {
           minNode = node;
        }
    }
    return minNode;
}

您应该查看 JavaDoc http://docs.oracle.com/javase/6/docs/api/java/util/Map.html

关于java - 需要 Java 传递对象方面的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14833409/

相关文章:

Java - 我的文件无法读取,我无法弄清楚这一点

java - 跨 Activity 发送整数显示 0

java - Astyanax 中的 Cassandra CQL3 支持

java - 这个需求用什么,Array,List,Map,?

java - 从 Iterable 计算 SumOfInts

java - 如何在运行时在 java 中设置 ArrayList 的泛型类型?

java - 工具提示在 struts 2 的 jfree 图表中不起作用

java - Java 小程序可以打开 "select directory"并通过 JavaScript 交互写入文件系统吗?

java - 对象类、java API

java - 如何在 Eclipse 中为 Android 程序传递 JVM 参数?