iOS/Androidアプリで配列をループ化し取得する方法を以下に記載します。
下記のサンプルでは、配列を指定したインデックスを先頭に、それより前の要素を後ろの方に追加することでループ化しています。
サンプルソースコード
iOS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| - (NSArray *)loopArray:(NSArray *)list index:(int)index
{
NSMutableArray *loopList = [[NSMutableArray alloc] initWithArray:list];
// 指定したインデックスより前のリストを保持
NSMutableArray *frontList = [[NSMutableArray alloc] init];
for (int i = 0; i < index; i++) {
[frontList addObject:loopList[i]];
}
// 新しいリストを生成
for (int i = 0; i < [frontList count]; i++) {
[loopList removeObjectAtIndex:0];
[loopList addObject:frontList[i]];
}
return loopList;
}
|
使用方法
1
2
3
4
5
6
7
8
| // 基の配列を生成
NSArray *originalList = @[@111, @222, @333, @444, @555, @666, @777, @888, @999];
// 配列をループ化し取得
NSArray *loopList = [self loopArray:originalList index:4];
// 出力
NSLog(@"%@", loopList);
|
出力結果
555, 666, 777, 888, 999, 111, 222, 333, 444
Android
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public ArrayList<Integer> getLoopIntegerList(ArrayList<Integer> list, int index) {
// 指定したインデックスより前のリストを保持
ArrayList<Integer> frontList = new ArrayList<Integer>();
for (int i = 0; i < index; i++) {
frontList.add(list.get(i));
}
// 新しいリストを生成
for (int i = 0; i < frontList.size(); i++) {
list.remove(0);
list.add(frontList.get(i));
}
return list;
}
|
使用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| // 基の配列を生成
Int[] intList = new Int[] { 111, 222, 333, 444, 555, 666, 777, 888, 999 };
Integer[] integerList = new Integer[intList.length];
int i = 0;
for (int value : intList) {
integerList[i++] = value;
}
ArrayList<Integer> originalList = new ArrayList<Integer>(Arrays.asList(integerList));
// 配列をループ化し取得
ArrayList<Integer> loopList = getLoopIntegerList(originalList, 4);
// 出力
for (int value : loopList) {
Log.d("loopList", "" + value);
}
|
出力結果
555, 666, 777, 888, 999, 111, 222, 333, 444
お薦めの参考書
詳解 Swift 改訂版
Swiftのかなり入り込んだところまで解説しながら、実践コードを多数収録しています。応用本になりますので、入門書を読み終えて中級者から上級者に差し掛かる時に読むことをお勧めします。読み物としてだけではなくリファレンスとしても使用できます。