HashMapの使い方
このサンプルではHashMapにデータを追加および削除する方法およびデータの取得について
紹介しています。
また、HashMapにListを追加して取り出すときの方法についても紹介します。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
//ログ出力の宣言
import android.util.Log;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HashMap<Integer, String> hash = new HashMap<Integer, String>();
putHashMap(hash, 0,"aaa");
putHashMap(hash, 1,"bbb");
putHashMap(hash, 2,"ccc");
printHashMap(hash);
//出力結果の例
/*
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/Key:0: aaa
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/Key:1: bbb
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/Key:2: ccc
*/
//インデックスが「1」(2番目のデータ)を削除します。
removeHashMap(hash, 1);
printHashMap(hash);
//出力結果の例
/*
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/Key:0: aaa
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/Key:2: ccc
*/
//HashMapにListを格納し、取り出してみます
testHashWithList();
}
//HashMapに格納されている情報を出力します。
private void printHashMap(HashMap<Integer, String> hash)
{
for(Integer iKey:hash.keySet())
{
Log.d("Key:" + String.valueOf(iKey), hash.get(iKey));
}
}
//HashMapオブジェクトにデータを格納します。
private void putHashMap(HashMap<Integer, String> hash, int iData, String sData)
{
hash.put(iData, sData);
}
private void removeHashMap(HashMap<Integer, String> hash, int iKey)
{
hash.remove(iKey);
}
//HashMapにListを格納し、取り出してみます
private void testHashWithList()
{
HashMap<Integer, List<String>> hash = new HashMap<Integer, List<String>>();
List<String> array=new ArrayList<String>();//HashMapに格納されているデータを取り出すためのList
List<String> array1=new ArrayList<String>();//1個目のList
List<String> array2=new ArrayList<String>();//2個目のList
List<String> array3=new ArrayList<String>();//3個目のList
int idx = 0;
//データ追加(このサンプルではHashMapに3個のList情報を格納しています。)
array1.add("a");
array1.add("b");
hash.put(idx, array1);
idx++;
array2.add("1");
hash.put(idx, array2);
idx++;
array3.add("1.5");
array3.add("0.5");
array3.add("0.01");
hash.put(idx, array3);
for(int i = 0; i < hash.size(); i++)
{
Log.d("i:" + String.valueOf(i), String.valueOf(i));
//HashMapからキーに一致したデータを取得します。
array = hash.get(i);
for(int j=0; j < array.size(); j++)
{
Log.d("j:" + String.valueOf(j), array.get(j));
}
}
//出力結果の例
/*
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/i:0: 0
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/j:0: a
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/j:1: b
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/i:1: 1
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/j:0: 1
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/i:2: 2
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/j:0: 1.5
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/j:1: 0.5
10-06 03:57:36.660 1958-1958/com.example.test.test12 D/j:2: 0.01
*/
}
}
|
HashMapは次のように宣言をして使用します。
HashMap<型, 型> hash = new HashMap<型, 型>();
HashMapはキーと値という組み合わせで使用します。
(例)
HashMap hash = new HashMap();
データを追加するときは「put」、データを削除するときは「remove」を使用します。
(例)
追加のケース
hash.put(iData, sData);
※キーと値を指定して追加します。
削除のケース
hash.remove(iKey);
※キーを指定して削除します。
全てのデータを取得するには次のように表示できます。
(例)
for(Integer iKey:hash.keySet())
{
Log.d("Key:" + String.valueOf(iKey), hash.get(iKey));
}
キーを指定して値を取得することができます。
(例)
hash.get(iKey)
HashMapにListオブジェクトを追加して、必要に応じて取得する例を示します。
HashMapに追加するListは一つずつインスタンス化したものを使用します。
clear()をしただけでは同じオブジェクトを参照したものとみなすようで
HashMapに追加したデータは同じデータが格納されてしまうためです。
追加には通常のputと同様の処理で実装します。
(例)
hash.put(idx, array1);
HashMapに格納したListを取得するにはgetを使用します。
(例)
array = hash.get(i);
取得したListオブジェクトは普通にみることができるので
次のように処理できます。
(例)
for(int j=0; j < array.size(); j++)
{
Log.d("j:" + String.valueOf(j), array.get(j));
}
|
|