Сортировать / сегрегировать объекты в зависимости от их типа и создавать / помещать в массив - PullRequest
0 голосов
/ 05 сентября 2018

То, чего я хочу достичь, это отсортировать массив объектов, которые у меня есть:

MixGroup = [PHP, PHP, PHP, EUR, USD, EUR, EUR, USD, PHP]

я хочу поместить их в один массив в соответствующие им валюты следующим образом:

MixGroup = [PHP [], EUR [], USD []].

Сейчас я новичок в программировании на Java.

я могу предоставить только объективный код c, который выполняет сортировку:

вот код:

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        NSArray *currencies = @[ @"USD", @"EUR", @"PHP", @"AUD" ];
        NSMutableArray<AccountBalance *> *allAccounts = [NSMutableArray new];

        int numOdDummyAccounts = 100;
        for (int i=0;i<numOdDummyAccounts;i++) {
            int currencyIdx = rand() % [currencies count];
            AccountBalance *dummyBalance = [AccountBalance new];
            [dummyBalance setCurrency:currencies[currencyIdx]];

            [allAccounts addObject:dummyBalance];
        }

        // print out all currencies
        for (int i=0;i<numOdDummyAccounts;i++) {
            NSLog(@"%@", [allAccounts[i] getCurrency]);
        }

        ////////////////////////////////////////////////////////////////

        // now do the sorting
        NSMutableDictionary<NSString *, NSMutableArray *> *groupedResult = [NSMutableDictionary new];
        [allAccounts enumerateObjectsUsingBlock:^(AccountBalance * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            NSMutableArray *currencyArray = [groupedResult objectForKey:[obj getCurrency]];
            if (currencyArray) {
                [currencyArray addObject:obj];
            } else {
                NSMutableArray *newCurrencyArray = [NSMutableArray new];
                [newCurrencyArray addObject:obj];
                [groupedResult setObject:newCurrencyArray forKey:[obj getCurrency]];
            }
        }];

        // print out all grouped currencies
        NSMutableArray<NSMutableArray *> *arrayOfArrays = [NSMutableArray new];
        for (NSString *currency in groupedResult.allKeys) {
            NSMutableArray *currentCurrency = [groupedResult objectForKey:currency];
            [arrayOfArrays addObject:currentCurrency];
            NSLog(@"Accounts with currency %@: ", currency);

            // print out all accounts with this currency
            for (int i=0;i<[currentCurrency count];i++) {
                NSLog(@"%@", [currentCurrency[i] getCurrency]);
            }
        }


    }
    return 0;
}

что он делает, создавая массив и помещая все относительные валюты в один массив, и он создаст другой массив, если валюта не является относительной. в результате:

AllCurrencies [] = [PHP [], EUR [], USD []] где, когда я вызываю AllCurrencies.get (0). он напечатает весь PHP и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...