0

HashMap の最初と 2 番目の要素に別々にアクセスできますか? つまり、HashMap がある場合

Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
int f = testMap.first();

そのような機能がないことは知っていますが、どうすればその要素にアクセスできますか?

4

6 に答える 6

2

HashMap秩序を保っていません。

このクラスは、マップの順序を保証しません。特に、順序が長期的に一定であることを保証するものではありません。

参照

LinkedHashMap挿入順序を維持する which または を使用できますTreeMap

LinkedHashMap

この実装が HashMap と異なる点は、そのすべてのエントリを実行する二重リンク リストを維持することです。この連結リストは反復順序を定義します。これは通常、キーがマップに挿入された順序 (挿入順序) です。キーがマップに再挿入されても、挿入順序は影響を受けないことに注意してください。(呼び出しの直前に m.containsKey(k) が true を返すときに m.put(k, v) が呼び出された場合、キー k はマップ m に再挿入されます。)

ツリーマップ

マップは、使用されるコンストラクターに応じて、キーの自然順序付けに従って、またはComparatorマップ作成時に指定された によってソートされます。

于 2013-03-02T07:10:51.030 に答える
0
 Iterator it = testMap.entrySet().iterator();

                    while (it.hasNext()) {
                            Map.Entry pairs = (Map.Entry) it.next();
                           System.out.println("Key"+pairse.getKey());
                          System.out.println("Value"+pairs.getValue());
}
于 2013-03-02T07:39:32.530 に答える
0

とのLinkedHashMapようなメソッドを持つ which を使用できます。ただし、2番目のキーについては、反復する必要があり、キーがマップに入力された順序で要素を取得しますfirstKeylastKey

于 2013-03-02T07:14:13.287 に答える
0
HashMap <Integer, Integer> testMap = new HashMap <Integer, Integer> ();
testMap.put (1, 2);
testMap.put (2, 3);
Iterator <Integer> i = testMap.values ().iterator ();
System.out.println ("First element: " + i.next ());
System.out.println ("Second element: " + i.next ());

HashMap要素が追加された順序を記憶していないため、「最初の要素」は必ずしも「最初に追加された」という意味ではないことに注意してください。

于 2013-03-02T07:14:15.517 に答える
0

マップは順序付けされていないため、「最初のエントリ」などはありません。また、マップ (または HashMap) にインデックスによる取得メソッドがないのもそのためです。

あなたはこれを行うことができます:

Map<Integer, Integer> map = ...;  // wherever you get this from

// Get the first entry that the iterator returns
Map.Entry<Integer, Integer> entry = map.entrySet().iterator().next();
(Note: Checking for an empty map omitted).

あなたのコードはマップ内のすべてのエントリを取得するわけではありません。見つかった最初のエントリですぐに返されます (そしてループから抜け出します)。

注: 呼び出しiterator()は、マップ全体を反復処理していることを意味するものではありません。

于 2013-03-02T07:12:30.163 に答える
0

番号。HapMap/HashTable として、キーと値を保持するエントリ ( http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Map.Entry.html )にデータを格納することはできません。一緒。

いつでも entrySet() の Iterator を取得してエントリにアクセスできます。または、キーのセットのみを返す keySet() を取得してみてください。

お役に立てれば。

于 2013-03-02T07:13:48.530 に答える