比较2个数组元素元素是否相同
2012-01-18 11:58
246 查看
环境:数组A 和数组B
我们需要比较的是数组的内容,而不是数组的对象引用所以我们不能想当然的用Array.Equals(ArrayA,ArrayB)(结果为false)
现在我们来看看怎样比较数组的内容,当然你可以用循环来比较,在此我们就不谈循环比较的方法了。现在我们看看其他的方法:
方法一:利用泛型方法
[/code]
方法二:Enumerable.SequenceEqual的扩展方法:确定两个序列是否相等的相等比较。(要求3.0以上)具体可以查看msdn:http://msdn.microsoft.com/en-us/library/bb348567.aspx,当然他的适用范围更广。
bool
equals = ArrayA.OrderBy(a => a).SequenceEqual(ArrayB.OrderBy(a => a));
方法三:利用Linq方法查询交集的数据比较个数
方法四:泛型筛选方法中ALL
var set = new HashSet<byte>(ArrayA);
bool allThere = ArrayB.All(set.Contains);
方法五:利用数学的思想利用交集和并集的思路
bool equals3 = ArrayA.Intersect(ArrayB).Count() ==ArrayA.Union(ArrayB).Count();
以上是我测试过的方法,碍于项目时间没有来得及做性能上测试
int[] ArrayA = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9}; int[] ArrayB = new[] {9, 1, 4, 5, 2, 3, 6, 7, 8};
我们需要比较的是数组的内容,而不是数组的对象引用所以我们不能想当然的用Array.Equals(ArrayA,ArrayB)(结果为false)
现在我们来看看怎样比较数组的内容,当然你可以用循环来比较,在此我们就不谈循环比较的方法了。现在我们看看其他的方法:
方法一:利用泛型方法
static bool ArraysEqual<T>(T[] a1, T[] a2) { if (ReferenceEquals(a1,a2)) return true; if (a1 == null || a2 == null) return false; if (a1.Length != a2.Length) return false; EqualityComparer<T> comparer = EqualityComparer<T>.Default; for (int i = 0; i < a1.Length; i++) { if (!comparer.Equals(a1[i], a2[i])) return false; } return true; }
[/code]
方法二:Enumerable.SequenceEqual的扩展方法:确定两个序列是否相等的相等比较。(要求3.0以上)具体可以查看msdn:http://msdn.microsoft.com/en-us/library/bb348567.aspx,当然他的适用范围更广。
bool
equals = ArrayA.OrderBy(a => a).SequenceEqual(ArrayB.OrderBy(a => a));
方法三:利用Linq方法查询交集的数据比较个数
var q = from a in ArrayA join b in ArrayB on a equals b select a; bool equals1 = ArrayA.Length == ArrayB .Length && q.Count() == ArrayA.Length;
方法四:泛型筛选方法中ALL
var set = new HashSet<byte>(ArrayA);
bool allThere = ArrayB.All(set.Contains);
方法五:利用数学的思想利用交集和并集的思路
bool equals3 = ArrayA.Intersect(ArrayB).Count() ==ArrayA.Union(ArrayB).Count();
以上是我测试过的方法,碍于项目时间没有来得及做性能上测试
相关文章推荐
- Java中如何比较两个数组中元素是否相同
- JS 比较两个数组是否相等 是否拥有相同元素
- js中比较两个数组中是否含有相同的元素,可去重,可删除合并为新数组
- Java比较两个数组中的元素是否相同的最简单方法
- Java对数组的操作(三)—比较两个数组中的元素是否相同的最简单方法
- JAVA比较两个数组中的元素是否相同
- JS比较两个数组是否相等 是否拥有相同元素
- Java判断2个数组里是否包含相同的元素(长度一致)
- 【C语言】比较两个数组中是否有相同的元素
- js中比较两个数组中是否含有相同的元素,可去重,可删除合并为新数组
- 从“比较两个含有多个不同元素的集合是否相同”引申出的几种算法
- JAVA两个数组间元素的比较(找出相同或者不同元素)
- 3.定义两个整型指针,分别用malloc、calloc对其分配空间保存3个元素,malloc分配的空间用memset清零,随机对数组进行赋值随机范围1-3,赋值后用memcmp比较两个数组。如果相同打
- java获取2个数组中相同与不相同的元素(授权场景)
- JavaScript如何比较两个数组的内容是否相同【转】
- 从“比较两个含有多个不同元素的集合是否相同”引申出的几种算法
- 比较2个对象的所有属性值是否相同--转
- JavaScript如何比较两个数组的内容是否相同
- 判断两个数组是否有相同的元素?有输出“有”,没有输出“没有”
- 判断两个数组中是否有相同的元素 C语言