【问题标题】:Check if at least two element in array are equal检查数组中的至少两个元素是否相等
【发布时间】:2015-10-05 03:17:16
【问题描述】:

有没有一种方法可以检查数组中至少有一个元素多次出现是否相等,而无需依次比较每个元素。

示例: int[] array1 = { 1, 3, 4, 2, 4 };元素4 出现两次。

【问题讨论】:

  • 请显示一些示例数据和所需的输出。
  • if (new Set(array).Count != array.Length) {...}
  • @DoThanhTung :检查我的答案。

标签: c# arrays compare


【解决方案1】:

您只需要检查原始数组与Distinct()版本之间是否有任何区别。

  var result = (array1.Count()-array1.Distinct().Count())>0;

【讨论】:

    【解决方案2】:

    您可以使用Distinct()方法获取数组的唯一值并与原始数组比较长度

    int[] arrayDistinctElements = array1.Distinct().ToArray();
    
    if(arrayDistinctElements.length == array1.length)
    {
    //All unique elements
    }
    else
    {
    //Duplicates were present
    }
    

    【讨论】:

      【解决方案3】:

      这可能对你有用

      var duplicates = array1.GroupBy(p => p).Where(g => g.Count() > 1).Select(g => g.Key);
      

      变量duplicates包含重复项的列表

      编辑

      如果你希望返回值是布尔值而不是

      var duplicates = array1.GroupBy(p => p).Where(g => g.Count() > 1).Select(g => g.Key).Count() > 0;
      

      你也可以这样做

      if(array1.Distinct().Count() != array1.Count())
          return true; /// You have duplicates in the array 
      else
          return false; /// All the elements in the array are different 
      

      【讨论】:

      • 对不起,我想在一个数组中比较。
      • 既然你更新了你的问题,我会更新我的答案
      • 如果我想要返回值是bool类型怎么办
      【解决方案4】:

      您可以使用以下代码:

      var isExisted = list.Count(item => item.Param == "test") >= 2;
      

      您的示例解决方案:https://dotnetfiddle.net/1y4w9K

      【讨论】:

      • 我编辑了我的问题。就我而言,我没有像“test”这样的确切值。我只想检查数组中的两个元素是否相等。
      猜你喜欢
      • 2015-07-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2014-10-18
      • 2023-03-19
      • 2020-02-12
      • 1970-01-01
      相关资源
      最近更新 更多