gpt4 book ai didi

iphone - 如何以相同的顺序将字符串的 NSArray 转换为唯一字符串数组?

转载 作者:IT王子 更新时间:2023-10-29 07:52:05 24 4
gpt4 key购买 nike

如果你有一个字符串的 NSArray

{ @"ONE", @"ONE", @"ONE", "TWO", @"THREE", @"THREE" }

我怎么把它变成

{ @"ONE", @"TWO", @"THREE" }

..其中数组遵循与原始数组相同的顺序。我认为您可以将数组转换为 NSSet 以获得独特的项目,但如果您将其转换回数组,则不能保证获得相同的顺序。

最佳答案

我最初的想法是你可以这样做:

NSArray * a = [NSArray arrayWithObjects:@"ONE", @"ONE", @"ONE", @"TWO", @"THREE", @"THREE", nil];
NSLog(@"%@", [a valueForKeyPath:@"@distinctUnionOfObjects.self"]);

但这并不能维持秩序。因此,您必须手动执行此操作:

NSArray * a = [NSArray arrayWithObjects:@"ONE", @"ONE", @"ONE", @"TWO", @"THREE", @"THREE", nil];
NSMutableArray * unique = [NSMutableArray array];
NSMutableSet * processed = [NSMutableSet set];
for (NSString * string in a) {
if ([processed containsObject:string] == NO) {
[unique addObject:string];
[processed addObject:string];
}
}

我使用 NSMutableSet 来确定我之前是否已经遇到过这个条目(而不是 [unique containsObject:string],因为一个集合将有 O (1) 查找时间,一个数组有 O(n) 的查找时间。如果你只处理少量对象,那么这无关紧要。但是,如果源数组非常大,那么使用设置以确定唯一性可能会增加一些速度提升。(但是,您应该使用 Instruments 来分析您的代码并查看是否有必要)

关于iphone - 如何以相同的顺序将字符串的 NSArray 转换为唯一字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com