配列のループ化(iOS/Android)

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のかなり入り込んだところまで解説しながら、実践コードを多数収録しています。応用本になりますので、入門書を読み終えて中級者から上級者に差し掛かる時に読むことをお勧めします。読み物としてだけではなくリファレンスとしても使用できます。

   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)