Czy ktoś wie jak brać NSCountedSet obiektów i utworzyć tablicę tych obiektów w celu ich przedmiotu liczyć? (Najwyższa liczba do najniższego)NSCountedSet kolejność według liczby
Odpowiedz
NSCountedSet *countedSet = [[NSCountedSet alloc] initWithArray:array2];
NSMutableArray *dictArray = [NSMutableArray array];
[countedSet enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
[dictArray addObject:@{@"object": obj,
@"count": @([countedSet countForObject:obj])}];
}];
NSLog(@"Objects sorted by count: %@", [dictArray sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"count" ascending:NO]]]);
W powyższym kodzie array2
jest tablicą 100 ciągi, każdy z dwoma literami. sortedArrayUsingDescriptors:
, zwraca posortowaną tablicę, w tym przypadku jest posortowana w porządku malejącym według liczby obiektów.
Oto kolejny sposób, aby osiągnąć ten sam rezultat:
NSArray *sortedValues = [countedSet.allObjects sortedArrayUsingComparator:^(id obj1, id obj2) {
NSUInteger n = [countedSet countForObject:obj1];
NSUInteger m = [countedSet countForObject:obj2];
return (n <= m)? (n < m)? NSOrderedAscending : NSOrderedSame : NSOrderedDescending;
}];
aby uzyskać wartości w porządku malejącym można używać (lub odwrócenia powyższej wartości zwracanej).
sortedValues.reverseObjectEnumerator.allObjects
Oto Swift wersja:
let sorted = countedSet.allObjects.sort { return countedSet.countForObject($0.0) < countedSet.countForObject($0.1) }
Wystarczy zmienić <
do >
na zamówienie
malejąco Dla Swift3 trzeba zmodyfikować Dostarczony kod SWIFT trochę:
let countedSet = [1,2,2,4,6,7,8,8,5,8,1]
let sorted = countedSet.allObjects.sorted { return countedSet.count(for: $0.0) > countedSet.count(for: $0.1) }
// iterate over all items in the set
for item in countedSet {
print("\(item): Count - \(countedSet.count(for: item))")
}
Co się dzieje z referencją 'bag'? Możesz wyjaśnić? – Adrian
Przepraszam, przetestowałem kod z innymi nazwami zmiennych i zmieniono nazwę zmiennej ;-) Dostosował kod. Dziękuję Ci! – Lepidopteron
- 1. Kolejność linq według, grupy i kolejności według każdej grupy?
- 2. Kolejność SQL według kolumny z innej tabeli
- 3. Zapytanie SQL: kolejność według długości znaków?
- 4. Kolejność SQL według najwyższej wartości dwóch kolumn
- 5. Kolejność kwerend mysql według wielu pozycji
- 6. Kolejność MYSQL według sortowania rosnącego i malejącego.
- 7. SQL: Grupuj według liczby (*) jako procent całkowitej liczby wierszy tabeli
- 8. Hrabia i sortować według liczby wystąpień
- 9. Replikacja tablic zgodna z elementami według liczby
- 10. Jak sortować według liczby z postgresql?
- 11. Jak oddzielić dane przemiennika według liczby pozycji
- 12. Kolejność SQL według `no` z NULL na końcu
- 13. Kolejność mySQL według niektórych wartości i następnie DESC?
- 14. Czy istnieje "Domyślna kolejność według kolumn" w SQL Server?
- 15. Kolejność SQL według dwóch różnych (prawdopodobnie zerowych) kolumn
- 16. Rankingi pozycji, kolejność według ufności za pomocą algorytmu Reddit Ranking
- 17. Kolejność SQL według tekstu ASC, pokaż numery na ostatniej pozycji
- 18. sql, kolejność według kolumny A, a następnie przez kolumny B
- 19. Dynamiczna kolejność linq według właściwości zagnieżdżonych z właściwościami zerowymi
- 20. SQL kolejność według kolejności w wartościach w zapytaniu
- 21. Sortowanie listy według częstotliwości liter w pythonie (kolejność malejąca)
- 22. Kryteria zapytania JPA i kolejność według dwóch kolumn
- 23. Jak sortować zapytanie DQL Doctrine według liczby lub członków relacji?
- 24. Dobry algorytm znajdowania motywów w tweetach uszeregowanych według liczby obserwatorów?
- 25. Dane podstawowe: sortowanie NSFetchRequest według liczby relacji do wielu
- 26. Zamawianie elementów z pasującymi tagami według liczby tagów pasujących do
- 27. Ruby Array to Histogram: jak grupować liczby według zakresu?
- 28. GROUP Według liczby wierszy zwróconych przez GROUP BY w MySQL
- 29. wiele do wielu uporządkowane według liczby relacji (Entity Framework, LINQ)
- 30. Railsy gem meta_search: sortowanie według liczby powiązanych modeli
Jeśli zmienisz 'return (n <= m)? (n
Filowk
To jest dobra odpowiedź, ale ja wolę używać instancji 'NSNumber' dla każdej z wartości countForObject, a następnie zwracam wynik' compare' dla nich. –