1

これは古いコードであり、デバッグ中です。サイズ2のMap(myMap)があります(確かに)。キーはnull1です。

SortedSet mySet = new TreeSet();
mySet.addAll(myMap.keySet());
Iterator mySetIterator = mySet.iterator();
while (mySetIterator.hasNext()) {
     Object newObj = mySetIterator.next();
     Object mapObj = myMap.get(newObj);
}

このwhileループは、1 回だけ繰り返されます。ここで何が問題なのかわかりません。何か問題ある?

私を助けてください。前もって感謝します。

アップデート:

今、私は例外を下回っていますmySet.addAll(myMap.keySet());

<Oct 18, 2011 12:36:21 PM IST> <Error> <> <BEA-000000> <java.lang.NullPointerException
    at edu.emory.mathcs.backport.java.util.TreeMap.compare(TreeMap.java:934)
    at edu.emory.mathcs.backport.java.util.TreeMap.put(TreeMap.java:97)
    at edu.emory.mathcs.backport.java.util.TreeSet.add(TreeSet.java:149)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:318)
    at edu.emory.mathcs.backport.java.util.TreeSet.addAll(TreeSet.java:165)
4

3 に答える 3

1

このコレクションはメソッドを呼び出す必要があるため、 にnull含めることは不可能です。したがって、これは同等のオブジェクト/プリミティブでなければなりませんSortedSetcomparTo

于 2011-10-14T16:25:28.510 に答える
1

キー オブジェクトの compareTo メソッドを確認してください。

キー オブジェクトの compareTo メソッドが、両方のキー オブジェクトの比較が同じであることを示している場合、Set では重複が許可されないため、キーセットの値は 1 つだけになります。Treeset を使用してキーを保存しているため、compareTo メソッドに問題がある可能性があります。

問題を正しく特定するために、コンテキスト内のコード全体を投稿してください。

于 2011-10-14T16:21:37.590 に答える
0

これを行うとどうなりますか?

Iterator mySetIterator = myMap.keySet().iterator();
while (mySetIterator.hasNext()) {
     Object newObj = mySetIterator.next();
     Object mapObj = myMap.get(newObj);
}
于 2011-10-14T16:37:47.770 に答える