• Source
    1. using System;
    2. using System.Collections.Generic;
    3.  
    4. class ProgrammingLanguagesHashSet
    5. {
    6. static void Main()
    7. {
    8. Console.WriteLine("Programming Languages HashSet Demo:");
    9. Console.WriteLine("===================================");
    10.  
    11. // Create HashSets for different programming paradigms
    12. HashSet<string> webLanguages = new HashSet<string>();
    13. HashSet<string> systemLanguages = new HashSet<string>();
    14.  
    15. // Add web development languages
    16. webLanguages.Add("JavaScript");
    17. webLanguages.Add("TypeScript");
    18. webLanguages.Add("PHP");
    19. webLanguages.Add("Python");
    20. webLanguages.Add("Ruby");
    21. webLanguages.Add("JavaScript"); // Try to add duplicate - will be ignored
    22.  
    23. Console.WriteLine("Web Development Languages:");
    24. Console.Write("webLanguages contains {0} elements: ", webLanguages.Count);
    25. DisplayHashSet(webLanguages);
    26.  
    27. // Add system programming languages
    28. systemLanguages.Add("C");
    29. systemLanguages.Add("C++");
    30. systemLanguages.Add("Rust");
    31. systemLanguages.Add("Go");
    32. systemLanguages.Add("Python"); // Python appears in both sets
    33.  
    34. Console.WriteLine("System Programming Languages:");
    35. Console.Write("systemLanguages contains {0} elements: ", systemLanguages.Count);
    36. DisplayHashSet(systemLanguages);
    37.  
    38. // Test adding duplicate
    39. bool wasAdded = webLanguages.Add("PHP");
    40. Console.WriteLine("\nTrying to add PHP again to webLanguages: " + wasAdded);
    41.  
    42. // Create a union of both sets
    43. HashSet<string> allLanguages = new HashSet<string>(webLanguages);
    44. Console.WriteLine("\nCreating union of web and system languages...");
    45. allLanguages.UnionWith(systemLanguages);
    46.  
    47. Console.Write("allLanguages (union) contains {0} elements: ", allLanguages.Count);
    48. DisplayHashSet(allLanguages);
    49.  
    50. // Find intersection (languages common to both sets)
    51. HashSet<string> commonLanguages = new HashSet<string>(webLanguages);
    52. commonLanguages.IntersectWith(systemLanguages);
    53.  
    54. Console.Write("\nCommon languages (intersection) contains {0} elements: ", commonLanguages.Count);
    55. DisplayHashSet(commonLanguages);
    56.  
    57. // Find languages only in web development (difference)
    58. HashSet<string> webOnlyLanguages = new HashSet<string>(webLanguages);
    59. webOnlyLanguages.ExceptWith(systemLanguages);
    60.  
    61. Console.Write("\nWeb-only languages (difference) contains {0} elements: ", webOnlyLanguages.Count);
    62. DisplayHashSet(webOnlyLanguages);
    63.  
    64. // Test subset relationship
    65. HashSet<string> scriptingLanguages = new HashSet<string> {"JavaScript", "Python"};
    66. Console.WriteLine("\nIs scriptingLanguages a subset of webLanguages? " +
    67. scriptingLanguages.IsSubsetOf(webLanguages));
    68. }
    69.  
    70. private static void DisplayHashSet(HashSet<string> set)
    71. {
    72. Console.Write("{ ");
    73. foreach (string language in set)
    74. {
    75. Console.Write(language + " ");
    76. }
    77. Console.WriteLine("}");
    78. }
    79. }