web-dev-qa-db-ja.com

値なしでHashMapにキーを追加しますか?

値を追加せずにHashMapにキーを追加する方法はありますか?奇妙に思えるかもしれませんが、私はHashMap<String, ArrayList<Object>> AMDを持っています。最初に必要に応じてキーを作成し、次に特定のキーが存在するかどうかを確認し、存在する場合は適切な値、つまりArrayList<Object>

それは十分に混乱しましたか?

13
LuxuryMode

_Map<String, List<Object>>_を使用しているので、本当にを探しています- マルチマップ 。これには、Google Guavaなどのサードパーティライブラリを使用することを強くお勧めします GuavaのMultimaps を参照してください。

_Multimap<String, Object> myMultimap = ArrayListMultimap.create();

// fill it
myMultimap.put("hello", "hola");
myMultimap.put("hello", "buongiorno");
myMultimap.put("hello", "สวัสดี");

// retrieve
List<String> greetings = myMultimap.get("hello");
                      // ["hola", "buongiorno", "สวัสดี"]
_

Java 8の更新:すべての_Map<K, SomeCollection<V>>_をマルチマップとして書き直す必要があるとはもはや確信していません。最近では、 Map#computeIfAbsent() のおかげで、Guavaなしで必要なものを簡単に入手できます。

_Map<String, List<Object>> myMap = new HashMap<>();

// fill it
myMap.computeIfAbsent("hello", ignored -> new ArrayList<>())
  .addAll(Arrays.asList("hola", "buongiorno", "สวัสดี");

// retrieve
List<String> greetings = myMap.get("hello");
                      // ["hola", "buongiorno", "สวัสดี"]
_
27
Matt Ball

nullの値を入れることができます。 HashMapで許可されています

最初にSetを使用し、キーを確認してから、マップに入力することもできます。

3
Bozho

あなたがこれをしたいかどうかはわかりません。 nullをキーの値として格納できますが、それを実行すると、.get("key")を実行すると、キーが存在するかどうか、または存在するが存在するかどうかがわかります。 null値?とにかく、 docs を参照してください。

3
Richard H

はい、それは十分に混乱していました;)私は得られませんなぜあなたはnullの代わりに空の配列リストを置く代わりに値なしでキーを保存したいです。

nullを追加すると、問題が発生する可能性があります。

map.get("somekey");

nullを受け取ると、キーが見つからないのか、存在するがnull ..にマップされるのかがわかりません。

2
Andreas_D
//This program should answer your questions
import Java.util.*;
public class attemptAddingtoHashMap { //Start of program

//MAIN METHOD #################################################

public static void main(String args[]) {  //main begins

Map<String, ArrayList<Object>> hmTrial = new HashMap<String, ArrayList<Object>>(); 

ArrayList alTrial = new ArrayList();//No values now

if (hmTrial.containsKey("first")) {
hmTrial.put("first", alTrial); }

else {hmTrial.put("first",alTrial);}
//in either case, alTrial, an ArrayList was mapped to the string "first"
//if you choose to, you can also add objects to alTrial later
System.out.println("hmTrial is " + hmTrial); //empty now
alTrial.add("h");
alTrial.add("e");
alTrial.add("l");
alTrial.add("l");
alTrial.add("o");
System.out.println("hmTrial is " + hmTrial);//populated now

   } //end of main
//#############################################################################################################

} //end of class

//Note - removing objects from alTrial will remove the from the hashmap
//You can copy, paste and run this code on https://ide.geeksforgeeks.org/
0
Suri Chitti