string[] str=new string[10];str[0]="test";   //第0项和第9项重复值
str[1]="test1";
str[2]="test2";
str[3]="test3";
str[4]="test4";
str[5]="test5";
str[6]="test6";
str[7]="test7";
str[8]="test8";
str[9]="test";   //第0项和第9项重复值我怎么写一个方法可以判断str字符串数组中,有没有重复值的项?

解决方案 »

  1.   

    using System; class Program 

      static void Main() 
      {
        string[] str = new string[10];
        
        str[0] = "test";   //第0项和第9项重复值
        str[1] = "test1";
        str[2] = "test2";
        str[3] = "test3";
        str[4] = "test4";
        str[5] = "test5";
        str[6] = "test6";
        str[7] = "test7";
        str[8] = "test8";
        str[9] = "test";   //第0项和第9项重复值
        
        Array.Sort(str);
        for (int i = 0; i < str.Length - 1; i++)
        {
          if (str[i] == str[i+1])
          {
            Console.WriteLine("有重复的项!");
            return;
          }
        }
        Console.WriteLine("没有重复的项!");
      } 
    }
      

  2.   

    逐個放到Hashtable的key中,放入前先判斷是否ContainsKey,true則表示有重複,break。
      

  3.   

    也可以用 Linq 的 Distinct() 和数组的长度比较,这是 C# 3.5 的新功能。
      

  4.   

    大概是这样的,我现在手头没有 Visual Studio 2008 环境,无法测试:
    if (str.Distinct().Count() < str.Length) // 有重复的项!
      

  5.   

    注意,如果使用 Linq 的功能,需要:
    using System.Linq;
      

  6.   

    我觉得你的不错!!!不知道和wuyi8808哪个效率高,假如有很多数据的话!!!
      

  7.   

    linq不是用在數據庫嗎?可以用在平時的編碼中?
      

  8.   

    List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };IEnumerable<int> distinctAges = ages.Distinct();Console.WriteLine("Distinct ages:");foreach (int age in distinctAges)
        Console.WriteLine(age);/*
     This code produces the following output: Distinct ages:
     21
     46
     55
     17
    */MSDN
      

  9.   


    我用的也是这个方法,不过您后来介绍的Linq我不知道啥来的,呵呵,我菜鸟。不过用了一下,感觉还行,就是看不到内部算法了,直接出结果。至于其它朋友所说的HashTable的,我也还没试过。谢谢你们啦。
      

  10.   

    Linq 的特点是语法简洁,往往是需要多行程序语句的地方,用 Linq 一行就解决了,但实际上也是调用那些算法,效率未必高,有时 Linq 的效率还会比直接写程序来得低。