比较2个数组元素元素是否相同

环境:数组A 和数组B

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;
}


方法二: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();


以上是我测试过的方法,碍于项目时间没有来得及做性能上测试


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是比较两个数组元素相同的打印代码: ```c #include <stdio.h> int main() { int arr1[] = {1, 2, 3, 4, 5}; int arr2[] = {1, 2, 6, 7, 8}; int len1 = sizeof(arr1) / sizeof(arr1[]); int len2 = sizeof(arr2) / sizeof(arr2[]); int i, j; printf("相同元素有:"); for (i = ; i < len1; i++) { for (j = ; j < len2; j++) { if (arr1[i] == arr2[j]) { printf("%d ", arr1[i]); break; } } } return ; } ``` 这段代码会输出两个数组相同元素。 ### 回答2: 你可以使用两个for循环嵌套遍历两个数组元素,并使用if条件语句比较元素是否相同。如果相同,则将元素打印出来。 以下是一个示例代码: ```python # 两个数组元素比较相同的打印代码 array1 = [1, 2, 3, 4, 5] array2 = [4, 5, 6, 7, 8] for i in range(len(array1)): for j in range(len(array2)): if array1[i] == array2[j]: print(array1[i]) ``` 在上述代码中,我们通过两个嵌套的for循环遍历了两个数组元素。在每次循环中,我们使用if条件语句比较了array1和array2的元素是否相同,如果相同,则使用print语句将元素打印出来。 对于给定的示例数组array1和array2,输出将是: ``` 4 5 ``` ### 回答3: 以下是用Python编写的代码,用于比较两个数组元素,并打印出相同元素: ```python array1 = [1, 2, 3, 4, 5] array2 = [4, 5, 6, 7, 8] # 创建一个空列表,用于存储相同元素 common_elements = [] # 遍历array1中的每个元素,检查是否在array2中存在 for element in array1: if element in array2: # 如果element存在于array2中,则将其添加到common_elements列表中 common_elements.append(element) # 打印结果 print("两个数组相同元素有:") for element in common_elements: print(element) ``` 这段代码首先定义了两个数组`array1`和`array2`,然后创建了一个空列表`common_elements`用于存储相同元素。 接下来,通过使用`for`循环遍历`array1`中的每个元素,并使用`if`语句来检查该元素是否存在于`array2`中。如果存在,则将该元素添加到`common_elements`列表中。 最后,使用另一个`for`循环遍历`common_elements`列表,并使用`print`语句将相同元素逐个打印出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值