| 配列の操作 
 配列およびArrayListの基本的使い方を紹介します。
 
 
 
   
 
 
| import android.provider.ContactsContract; import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 
 //ArrayList配列の宣言
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.StringTokenizer;
 //ログ出力の宣言
 import  android.util.Log;
 
 public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 //配列を宣言
 Log.d("処理", "配列を宣言");
 Integer[] arrayNum=new Integer[3];
 String[] arrayStr=new String[3];
 ArrayList<Integer> arrayNum2=new ArrayList<Integer>();
 ArrayList<String> arrayStr2=new ArrayList<String>();
 
 //データを取得する
 Log.d("処理", "データを取得");
 arrayStr=getArray(arrayNum, arrayStr);
 arrayStr2=getArray(arrayNum2, arrayStr2);
 //結果を出力する
 Log.d("処理", "結果を出力");
 printArray(arrayNum, arrayStr);
 printArray(arrayNum2, arrayStr2);
 //(最初の)要素を削除します
 Log.d("処理", "要素を削除");
 arrayNum=removeArrayNum(0, arrayNum);
 arrayStr=removeArrayStr(0, arrayStr);
 arrayNum2=removeArrayNum(0, arrayNum2);
 arrayStr2=removeArrayStr(0, arrayStr2);
 //結果を出力する
 Log.d("処理", "結果を出力");
 printArray(arrayNum, arrayStr);
 printArray(arrayNum2, arrayStr2);
 }
 //配列の結果を出力
 private void printArray(Integer[] arrayNum, String[] arrayStr)
 {
 //ArrayListの配列のサイズは「length」
 for(int i=0; i < arrayNum.length; i++)
 {
 Log.d("i", String.valueOf(i));
 Log.d("arrayNum", String.valueOf(arrayNum[i]));
 Log.d("arrayStr", arrayStr[i]);
 }
 }
 //ArrayListの結果を出力
 private void printArray(ArrayList<Integer> arrayNum, ArrayList<String> arrayStr)
 {
 //ArrayListの配列のサイズは「size」
 for(int i=0; i < arrayNum.size(); i++)
 {
 Log.d("i", String.valueOf(i));
 Log.d("arrayNum2", String.valueOf(arrayNum.get(i)));
 Log.d("arrayStr2", arrayStr.get(i));
 }
 }
 //配列から指定のインデックスのデータを削除
 private Integer[] removeArrayNum(int idx, Integer[] arrayNum)
 {
 //数字の配列から指定のインデックスの要素を削除します
 List<Integer> arrayNum2=new ArrayList<Integer>(Arrays.asList(arrayNum));
 arrayNum2.remove(idx);
 arrayNum=(Integer[])arrayNum2.toArray(new Integer[arrayNum2.size()]);
 return arrayNum;
 }
 //配列から指定のインデックスのデータを削除
 private String[] removeArrayStr(int idx, String[] arrayStr)
 {
 //文字列の配列から指定のインデックスの要素を削除します
 List<String> arrayStr2=new ArrayList<String>(Arrays.asList(arrayStr));
 arrayStr2.remove(idx);
 arrayStr=(String[])arrayStr2.toArray(new String[arrayStr2.size()]);
 return arrayStr;
 }
 //ArrayListから指定のインデックスのデータを削除
 private ArrayList<Integer> removeArrayNum(int idx, ArrayList<Integer> arrayNum)
 {
 arrayNum.remove(idx);
 return arrayNum;
 }
 //ArrayListから指定のインデックスのデータを削除
 private ArrayList<String> removeArrayStr(int idx, ArrayList<String> arrayStr)
 {
 arrayStr.remove(idx);
 return arrayStr;
 }
 private String[] getArray(Integer[] arrayNum, String[] arrayStr)
 {
 Integer iData=0;
 String sData="";
 for(int i=0; i < 3; i++)
 {
 arrayNum[i]=getDataNum(i);
 arrayStr[i]=getDataStr(i);
 }
 return arrayStr;
 }
 private ArrayList<String> getArray(ArrayList<Integer> arrayNum, ArrayList<String> arrayStr)
 {
 Integer iData=0;
 String sData="";
 for(int i=0; i < 3; i++)
 {
 arrayNum.add(getDataNum(i));
 arrayStr.add(getDataStr(i));
 }
 return arrayStr;
 }
 private Integer getDataNum(int idx)
 {
 Integer iData=0;
 switch (idx)
 {
 case 0:
 iData=10;
 break;
 case 1:
 iData=20;
 break;
 case 2:
 iData=30;
 break;
 }
 return iData;
 }
 private String getDataStr(int idx)
 {
 String sData="";
 switch (idx)
 {
 case 0:
 sData="あAa";
 break;
 case 1:
 sData="いBb";
 break;
 case 2:
 sData="うCc";
 break;
 }
 return sData;
 }
 }
 
 
 |  
 配列は要素数を決定してから使用します。
 (例)
 Integer[] arrayNum=new Integer[3];
 String[] arrayStr=new String[3];
 
 要素を決定したインデックスに対してデータを格納できます。
 (例)
 arrayNum[0]=10;
 arrayStr[0]="あああ";
 
 配列のデータを取得します。
 (例)
 Log.d("arrayNum", String.valueOf(arrayNum[i]));
 Log.d("arrayStr", arrayStr[i]);
 
 指定した要素を削除します。
 (例)
 //数字の配列から指定のインデックスの要素を削除します
 List arrayNum2=new ArrayList(Arrays.asList(arrayNum));
 arrayNum2.remove(idx);
 arrayNum=(Integer[])arrayNum2.toArray(new Integer[arrayNum2.size()]);
 (例)
 //文字列の配列から指定のインデックスの要素を削除します
 List arrayStr2=new ArrayList(Arrays.asList(arrayStr));
 arrayStr2.remove(idx);
 arrayStr=(String[])arrayStr2.toArray(new String[arrayStr2.size()]);
 
 ArrayListはnewで宣言して使用します。
 (例)
 ArrayList arrayNum2=new ArrayList();
 ArrayList arrayStr2=new ArrayList();
 配列にはaddでデータを設定します。
 
 配列のデータを取得します。
 (例)
 Log.d("arrayNum2", String.valueOf(arrayNum.get(i)));
 Log.d("arrayStr2", arrayStr.get(i));
 
 指定した要素を削除します。
 (例)
 arrayNum.remove(idx);
 arrayStr.remove(idx);
 
 
 実行結果
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/処理: 配列を宣言
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/処理: データを取得
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/処理: 結果を出力
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 0
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum: 10
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr: あAa
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 1
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum: 20
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr: いBb
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 2
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum: 30
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr: うCc
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 0
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum2: 10
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr2: あAa
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 1
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum2: 20
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr2: いBb
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 2
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum2: 30
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr2: うCc
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/処理: 要素を削除
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/処理: 結果を出力
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 0
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum: 20
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr: いBb
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 1
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum: 30
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr: うCc
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 0
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum2: 20
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr2: いBb
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/i: 1
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayNum2: 30
 10-05 11:23:57.260 5783-5783/com.example.test.test10 D/arrayStr2: うCc
 
 
 また既存データの入れ替えはsetを使います。
 ArrayList配列.set(0から始まるインデックス番号, データ);
 
 指定の位置にデータを入れるときはaddに引数を2個指定してデータを入れます。
 ArrayList配列.add(0から始まるインデックス番号, データ);
 インデックスに「0」を設定すると既存の「0」の前にデータを入れることになるので
 一番最初にデータが入ります。
 
 他で作った配列をreturnで再格納できることを確認するためのテスト
 
 
   
 
 
| package test.example.com.test; 
 import android.util.Log;
 import java.util.ArrayList;
 import java.util.List;
 
 public class clsTest1 {
 //コンストラクタに初期化処理を呼ぶ
 clsTest1()
 {
 init();
 }
 //使用する配列を初期化
 private void init()
 {
 arrayData=new ArrayList<>();
 }
 //クラスで宣言した配列
 private List<String>arrayData=null;
 //クラスで生成した配列を戻す
 public List<String> getArray()
 {
 return arrayData;
 }
 //配列にデータを作成
 public List<String> test1()
 {
 List<String> array=new ArrayList<>();
 for(int i=0;i<3;i++)
 {
 array.add("aaa"+String.valueOf(i+1));
 }
 //格納する配列データをクリアしておく
 arrayData.clear();
 //作成したローカル配列データをprivate配列にデータをコピー
 for(int i=0;i<array.size();i++)arrayData.add(array.get(i));
 //作成した配列を戻す
 return array;
 }
 //既存のprivate配列にデータを追加
 public void addArray()
 {
 arrayData.add("ccc");
 Log.d("addArray","course in!!" + " size:" + String.valueOf(arrayData.size()));
 }
 }
 
 
 |  クラスの呼び元
 
 
   
 
 
| package test.example.com.test; 
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.util.Log;
 import java.util.ArrayList;
 import java.util.List;
 
 public class MainActivity extends AppCompatActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 test1();
 }
 private void test1()
 {
 //クラスをインスタンス化
 clsTest1 cls=new clsTest1();
 //クラスで生成した配列をこちらのローカル配列に入れるため配列を準備
 List<String> array=new ArrayList<>();
 //生成した配列をローカル配列オブジェクトに格納
 array=cls.test1();
 Log.d("start","---------------------------------");
 for(int i=0;i<array.size();i++)
 {
 Log.d("i:",String.valueOf(i) + " " + array.get(i));
 }
 Log.d("end","---------------------------------");
 //クラス側の配列にデータを追加
 cls.addArray();
 Log.d("start","---------------------------------");
 //クラスで生成した現時点の配列データをローカル配列に格納
 array=cls.getArray();
 for(int i=0;i<array.size();i++)
 {
 Log.d("i:",String.valueOf(i) + " " + array.get(i));
 }
 Log.d("end","---------------------------------");
 }
 //[実行結果]
 //これにより作った配列結果をreturnでそのまま渡せることがわかる
 /*
 10-27 08:52:32.640 10831-10831/test.example.com.test D/start: ---------------------------------
 10-27 08:52:32.650 10831-10831/test.example.com.test D/i:: 0 aaa1
 10-27 08:52:32.650 10831-10831/test.example.com.test D/i:: 1 aaa2
 10-27 08:52:32.650 10831-10831/test.example.com.test D/i:: 2 aaa3
 10-27 08:52:32.650 10831-10831/test.example.com.test D/end: ---------------------------------
 10-27 08:52:32.650 10831-10831/test.example.com.test D/addArray: course in!! size:4
 10-27 08:52:32.650 10831-10831/test.example.com.test D/start: ---------------------------------
 10-27 08:52:32.650 10831-10831/test.example.com.test D/i:: 0 aaa1
 10-27 08:52:32.650 10831-10831/test.example.com.test D/i:: 1 aaa2
 10-27 08:52:32.650 10831-10831/test.example.com.test D/i:: 2 aaa3
 10-27 08:52:32.650 10831-10831/test.example.com.test D/i:: 3 ccc
 10-27 08:52:32.650 10831-10831/test.example.com.test D/end: ---------------------------------
 */
 }
 
 
 |  
 
 |  |