エンジニア

色々使えるHashMap

投稿日:2013年5月2日 更新日:

今回エンジニアブログを担当させて頂きます佐藤です。はじめまして。

先日、JavaのHashMapにとても感動したので今回はHashMapについて記述させて頂きます。

HashMap
HashMapはMap実装クラスの1つです。
Map クラスの特徴はキーと値をペアで保持できるところです。
また、同一のキーを複数登録することはできません。

HashMapの基本的な使い方は以下のように記述します。

HashMap<キーの型,値の型> map =  new HashMap<キーの型,値の型>();

保存

map.put(キー1,値1);
map.put(キー2,値2);

取得

map.get(キー1);
map.get(キー2);

実際に私が使ったHashMapの実用例を紹介させていただきます。

ネットワークから取得した画像をキャッシュする

 public class ImageCache {

  private static HashMap<URL,Bitmap> cache = new HashMap<URL,Bitmap>();

  public static Bitmap getImage(URL key) {
   if (cache.containsKey(key)) {
    return cache.get(key);
   }
   return null;
  }
  
   // 画像を保持する。  
  public static void setImage(URL key, Bitmap image) {
   cache.put(key, image);
  }

  public static void clearCache() {
   cache = null;
   cache = new HashMap<URL,Bitmap>();
  }
 }

データの保持をする

SharedPreferencesを使ってデータの保存をする時も、HashMapを利用すれば複数のデータを保存することができました!

public class DataMap {

  Context context;

  private SharedPreferences sharedPref;

  public DataMap(Context context, String name){

   this.context = context;
   sharedPref = this.context.getSharedPreferences(name ,Context.MODE_PRIVATE);

  }

  // キーと値を保存する  
  public void Write(HashMap<String, String> hashmap){

   SharedPreferences.Editor preference_editor = sharedPref.edit();

   Set<String> key_set = hashmap.keySet();

   Iterator<String> key_iterator = key_set.iterator();

   // 1つづつ格納する。  
   for(int i=0; i < hashmap.size(); i++){

    String key = key_iterator.next().toString();

    // キーから値を取得  
    String value = hashmap.get(key).toString();
    preference_editor.putString(key, value);

   }

   preference_editor.commit();
  }

  // キーを参照し値を取得する  
  public HashMap<String, String> Read(String[] keys){

   HashMap<String, String> hashmap = new HashMap<String,String>();

   for(int i=0; i < keys.length; i++){
     // 参照したキーに値が入っていなければ任意の値(今回は""を)で返す  
     hashmap.put(keys[i], sharedPref.getString(keys[i], ""));
    }

   return hashmap;
  }

}

HashMapは使い方次第でもっと色々なことができそうだなと思いました!

採用情報

ワンダープラネットでは、一緒に働く仲間を幅広い職種で募集しております。

-エンジニア
-

© WonderPlanet Inc.