using System;
using System.Collections.Generic;
class ProgrammingLanguagesHashSet
{
static void Main()
{
Console.WriteLine("Programming Languages HashSet Demo:");
Console.WriteLine("===================================");
// Create HashSets for different programming paradigms
HashSet<string> webLanguages = new HashSet<string>();
HashSet<string> systemLanguages = new HashSet<string>();
// Add web development languages
webLanguages.Add("JavaScript");
webLanguages.Add("TypeScript");
webLanguages.Add("PHP");
webLanguages.Add("Python");
webLanguages.Add("Ruby");
webLanguages.Add("JavaScript"); // Try to add duplicate - will be ignored
Console.WriteLine("Web Development Languages:");
Console.Write("webLanguages contains {0} elements: ", webLanguages.Count);
DisplayHashSet(webLanguages);
// Add system programming languages
systemLanguages.Add("C");
systemLanguages.Add("C++");
systemLanguages.Add("Rust");
systemLanguages.Add("Go");
systemLanguages.Add("Python"); // Python appears in both sets
Console.WriteLine("System Programming Languages:");
Console.Write("systemLanguages contains {0} elements: ", systemLanguages.Count);
DisplayHashSet(systemLanguages);
// Test adding duplicate
bool wasAdded = webLanguages.Add("PHP");
Console.WriteLine("\nTrying to add PHP again to webLanguages: " + wasAdded);
// Create a union of both sets
HashSet<string> allLanguages = new HashSet<string>(webLanguages);
Console.WriteLine("\nCreating union of web and system languages...");
allLanguages.UnionWith(systemLanguages);
Console.Write("allLanguages (union) contains {0} elements: ", allLanguages.Count);
DisplayHashSet(allLanguages);
// Find intersection (languages common to both sets)
HashSet<string> commonLanguages = new HashSet<string>(webLanguages);
commonLanguages.IntersectWith(systemLanguages);
Console.Write("\nCommon languages (intersection) contains {0} elements: ", commonLanguages.Count);
DisplayHashSet(commonLanguages);
// Find languages only in web development (difference)
HashSet<string> webOnlyLanguages = new HashSet<string>(webLanguages);
webOnlyLanguages.ExceptWith(systemLanguages);
Console.Write("\nWeb-only languages (difference) contains {0} elements: ", webOnlyLanguages.Count);
DisplayHashSet(webOnlyLanguages);
// Test subset relationship
HashSet<string> scriptingLanguages = new HashSet<string> {"JavaScript", "Python"};
Console.WriteLine("\nIs scriptingLanguages a subset of webLanguages? " +
scriptingLanguages.IsSubsetOf(webLanguages));
}
private static void DisplayHashSet(HashSet<string> set)
{
Console.Write("{ ");
foreach (string language in set)
{
Console.Write(language + " ");
}
Console.WriteLine("}");
}
}