値を追加せずにHashMapにキーを追加する方法はありますか?奇妙に思えるかもしれませんが、私はHashMap<String, ArrayList<Object>>
AMDを持っています。最初に必要に応じてキーを作成し、次に特定のキーが存在するかどうかを確認し、存在する場合は適切な値、つまりArrayList<Object>
それは十分に混乱しましたか?
_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", "สวัสดี"]
_
null
の値を入れることができます。 HashMap
で許可されています
最初にSet
を使用し、キーを確認してから、マップに入力することもできます。
あなたがこれをしたいかどうかはわかりません。 null
をキーの値として格納できますが、それを実行すると、.get("key")
を実行すると、キーが存在するかどうか、または存在するが存在するかどうかがわかります。 null
値?とにかく、 docs を参照してください。
はい、それは十分に混乱していました;)私は得られませんなぜあなたはnull
の代わりに空の配列リストを置く代わりに値なしでキーを保存したいです。
null
を追加すると、問題が発生する可能性があります。
map.get("somekey");
null
を受け取ると、キーが見つからないのか、存在するがnull
..にマップされるのかがわかりません。
//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/