То, чего я хочу достичь, это отсортировать массив объектов, которые у меня есть:
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 и т. д.