Javaで便利なMap。
Mapはkeyとvalueで使用していくが、
keyで値があるのが確実に分かっていればいいのですが、
まずはkeyが存在するのか、そしてvalueに値があるのかの確認が必要な場合もあると思います。
ということで、コードを書いてみました。
package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// Map<String, Object> mapObj = new HashMap<>();
Map<String, Object> mapObj = new LinkedHashMap<>();
List<Object> listObj = new ArrayList<>();
mapObj.put("key_1", "value_1");
mapObj.put("key_2", "value_2");
mapObj.put("key_3", "value_3");
mapObj.put("key_4", "value_4");
mapObj.put("key_5", "value_5");
for (String key : mapObj.keySet()) {
Object obj = mapToValueGet(mapObj, key);
if (obj != null) {
listObj.add(obj);
}
}
for (Object obj : listObj) {
System.out.println(obj);
}
}
/**
* mapから値を取得する
* @param map
* @param key
* @return 値 or null
*/
public static Object mapToValueGet(Map<String, Object> map, String key) {
Object obj = null;
// Mapの存在するかの確認
if ((map != null) && (!map.isEmpty())) {
// keyを使って値が取得できるかの確認
if ((map.containsKey(key)) && (map.get(key) != null)) {
obj = map.get(key);
}
}
return obj;
}
}
出力結果は、
value_1
value_2
value_3
value_4
value_5
となります。
ただ、型がObjectになっていますので、
StringやIntegerにしたい場合は、変更の処理が必要になりますのでご注意を。
今回はMapの順番を担保したくてLinkedHashMapでnewしています。
forでする必要がない場合や順番を担保しなくてもいい場合が通常だと思うので、
普通はHashMapでnewをして使うことが多いです。
もしよかったらHashMapでも上記のコードを実行してみてください。
出力結果が変わりますので。
以上、Mapから値を取得する方法でした。
コメント