- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 NSMutableArray
oldArray
。现在,在某一时刻,这个 NSMutableArray
对象被另一个 NSMutableArray
更新,它可能有更多、更少或相同数量的元素作为前一个 NSMutableArray
.
我想比较新旧数组的变化。我想要的是两个 NSArray
s addedArray
和 removedArray
,它们将包含已添加和/或从旧元素中删除的元素的索引大批。
举个例子,整个问题会更清楚:
oldArray = {@"a",@"b",@"d",@"e",@"g"};
newArray = {@"a",@"c",@"d",@"e",@"f",@"h"};
因此,这里删除的对象分别是索引 1 和 4 处的 @"b"和 @"g"。添加的对象是索引 1、4 和 5 处的 @"c"、@"f"和 @"h"(首先删除对象,然后添加)。
因此,
removedArray = {1,4}; and addedArray = {1,4,5};
我想要一种有效的方法来从旧的和新的 NSMutableArray
中获取这两个数组 - removedArray
和 addedArray
。谢谢!如果问题不是很容易理解,我愿意提供更多信息。
编辑 1
如果我解释一下我想用它做什么,也许会更清楚。
实际上,我使用它的目的是在加载 tableview 后使用动画方法 insertRowsAtIndexPaths
和 removeRowsAtIndexPaths
更新 UITableView,以便用户可以看到删除的行出去,新行进来。 tableview 存储用户可以添加或删除的收藏夹元素。所以在添加了一些收藏夹并删除了一些之后;当用户返回到收藏夹 TableView 时,将显示动画。
编辑 2
早该提到这一点,但是旧数组和新数组中的元素都会按升序排列。只有删除或添加的索引很重要。订单不能更改。前任。 {@"b",@"a",@"c",@"d"} 不能是数组。
最佳答案
I have tried iterating through the old and the new arrays using loops and if conditions, but is it getting really messy and buggy.
这不是一个简单的问题。首先,请注意它可能有多种解决方案:
a b c d
b c d e
(a={0, 1, 2, 3}, r={0, 1, 2, 3})
和 (a={3}, r={ 0})
是有效的解决方案。您可能正在寻找的是一个最小解决方案。
获得最小解的一种方法是找到 Longest Common Subsequence (LCS)的两个序列。查找 LCS 的算法会告诉您两个序列中哪些元素属于 LCS,哪些不属于。不在 LCS 中的原始数组的每个元素的索引进入 removed
数组;不在 LCS 中的新数组元素的索引进入 added
数组。
这里有几个例子(我把LCS的元素用括号括起来了):
0 1 2 3 4 5
(a) b (d) (e) g
(a) c (d) (e) f h
不在LCS中的old
项目是1和4;不在 LCS 中的 new
项目是 1、4 和 5。
这是另一个例子:
0 1 2 3
a (b) (c) (d)
(b) (c) (d) e
现在 added
是 3
而 removed
是 0
。
关于ios - 找出 NSArray/NSMutableArray 变化的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316438/
在 viewDidLoad 上,我的应用程序填充 NSMutableArray arrayOfHaiku,它是 NSDictionary 项的数组,如下所示: NSError *error; NS
我在 NSMutableArray 上是这样的: NSMutableArray *array = [NSMutableArray arrayWithObjects:@"0",@"0",@"0",@"0
我正在尝试设置我的 allArticlesArray 的内容,然后将附加对象附加到数组中。这是我的代码片段: [self.allArticlesArray setArray:newsArray]; [
我用 NSMutableArray 中的数据填充了 TableView ,一切正常。当我选择一个单元格(didSelectRowAtIndex)时,该项目将从数组中删除,正如它应该做的那样。现在我希望
我有一个 NSMutableArray 是我的代表,我也在我的一个 View Controller 中使用它。 所以在 viewDidLoad 我像这样制作我的 NSMutableArray 的可变副
我有 100 个元素的 NSMutableArray。 我想将“20 - 50”、“10 - 20”、“60 - 100”和 50 - 60. 元素加载到单独的 NSMutableArray 中,并将
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我在尝试将字符串的 NSMutableArray 共享给另一个类时遇到了一些问题。我有一个 tableView,其中填充了 Strings,我想将其添加到 NSMutableArray。然后在另一个
正如我们所知,数组是一个连续的内存分配。那么 NSMutableArray 大小将如何增加。 最佳答案 C 数组确实使用连续内存,C++ std::vector 也是如此,但是 NSMutableAr
我需要对一个数组进行排序,里面有一个数组,像这样: NSMutableArray * array_example = [[NSMutableArray alloc] init]; [array_e
这看起来很简单,但我只是得到一个空数组。 我想获取一个按下的按钮,找到它旁边的所有按钮(参见代码中的注释),并将所有找到的按钮添加到另一个 NSMutableArray。 然后我想遍历该数组并对每个按
我正在尝试在另一个 NSMutableArray 中添加 NSMutableArray。但我想做的是嵌套数组。 我当前的代码是: NSMutableArray *array1 = [NSMutab
我有三个类,即DepartmentViewController、DepartmentRequest、Department。这就像我从 DepartmentViewcontroller 发出部门请求,并
我正在尝试将 NSMutableArray 存储在 NSMutableArray 中。所以 var all:NSMutableArray = NSMutableArray() let localArr
这一定是那些错误之一,您一直盯着代码看很长时间,以至于找不到错误。 我有这个代码块,我在其中循环遍历一个包含多个 NSMutableArray 的 NSMutableArray: // FoodVi
我有一个包含 50 个条目的 NSMutableArray - 有什么简单的方法可以将其分成 5 个 NSMutableArray,每个 10 个条目。 最佳答案 是的,要划分 NSMutableAr
我想将 NSMutableArray 的 addObject 放入 NSMutableArray 中,那么我如何快速实现这一点。并检索它,所以请帮助我,因为现在我正在快速学习。 间接说我要二维数组是指
好吧: 我有 NSMutableArray 1 我还有 NSMutableArray 2 我想从数组 1 中删除与数组 2 中的对象匹配的所有对象。 有什么想法吗? 最佳答案 我刚刚打开文档,打印 N
我正在尝试制作 NSMutableArray 的深拷贝,其对象是与此类似的自定义类的实例: @interface CustomParent : NSObject @property NSInteger
我知道你们可能会觉得这是一个重复的问题。但我对我的项目的这个问题搞砸了。 现在转到这个问题,我已经采取了NSMutableArray命名为 arr1包含字符串值,例如 @"34" , @"40"等等。
我是一名优秀的程序员,十分优秀!