using System;
using System.Collections.Generic;
class HashSet
{
static void Main()
{
HashSet<String> cars = new HashSet<String>();
HashSet<String> trucks = new HashSet<String>();
cars.Add ("Tesla M3");
cars.Add ("Ford Mustang");
cars.Add ("Chevy Camaro");
cars.Add ("Tesla M3"); // error, can't add Musta again
trucks.Add ("Ford F150");
trucks.Add ("Chevy Siverado");
trucks.Add ("Dodge Ram");
Console.Write ("cars contains {0} elements: ", cars.Count);
DisplaySet (cars);
Console.Write("trucks contains {0} elements: ", trucks.Count);
DisplaySet (trucks);
// Create a new HashSet with both cars and trucks
HashSet<String> allClassMembers = new HashSet<String>(cars);
Console.WriteLine ("allClassMembers UnionWith trucks ...");
allClassMembers.UnionWith (trucks);
Console.Write ("allClassMembers contains {0} elements: ", allClassMembers.Count);
DisplaySet (allClassMembers);
}
private static void DisplaySet (HashSet<String> set)
{
Console.Write ("{");
foreach (String i in set)
{
Console.Write (" {0}", i);
}
Console.WriteLine (" }");
}
} // HashSet
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCmNsYXNzIEhhc2hTZXQKewogICAgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAgICAgSGFzaFNldDxTdHJpbmc+IGNhcnMgPSBuZXcgSGFzaFNldDxTdHJpbmc+KCk7CiAgICAgICAgSGFzaFNldDxTdHJpbmc+IHRydWNrcyA9IG5ldyBIYXNoU2V0PFN0cmluZz4oKTsKCiAgICAgICAgY2Fycy5BZGQgKCJUZXNsYSBNMyIpOwogICAgICAgIGNhcnMuQWRkICgiRm9yZCBNdXN0YW5nIik7CiAgICAgICAgY2Fycy5BZGQgKCJDaGV2eSBDYW1hcm8iKTsKCiAgICAgICAgY2Fycy5BZGQgKCJUZXNsYSBNMyIpOyAvLyBlcnJvciwgY2FuJ3QgYWRkIE11c3RhIGFnYWluCgogICAgICAgIHRydWNrcy5BZGQgKCJGb3JkIEYxNTAiKTsKICAgICAgICB0cnVja3MuQWRkICgiQ2hldnkgU2l2ZXJhZG8iKTsKICAgICAgICB0cnVja3MuQWRkICgiRG9kZ2UgUmFtIik7CgogICAgICAgIENvbnNvbGUuV3JpdGUgKCJjYXJzIGNvbnRhaW5zIHswfSBlbGVtZW50czogIiwgY2Fycy5Db3VudCk7CiAgICAgICAgRGlzcGxheVNldCAoY2Fycyk7CgogICAgICAgIENvbnNvbGUuV3JpdGUoInRydWNrcyBjb250YWlucyB7MH0gZWxlbWVudHM6ICIsIHRydWNrcy5Db3VudCk7CiAgICAgICAgRGlzcGxheVNldCAodHJ1Y2tzKTsKCiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEhhc2hTZXQgd2l0aCBib3RoIGNhcnMgYW5kIHRydWNrcwogICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBhbGxDbGFzc01lbWJlcnMgPSBuZXcgSGFzaFNldDxTdHJpbmc+KGNhcnMpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lICgiYWxsQ2xhc3NNZW1iZXJzIFVuaW9uV2l0aCB0cnVja3MgLi4uIik7CiAgICAgICAgYWxsQ2xhc3NNZW1iZXJzLlVuaW9uV2l0aCAodHJ1Y2tzKTsKCiAgICAgICAgQ29uc29sZS5Xcml0ZSAoImFsbENsYXNzTWVtYmVycyBjb250YWlucyB7MH0gZWxlbWVudHM6ICIsIGFsbENsYXNzTWVtYmVycy5Db3VudCk7CiAgICAgICAgRGlzcGxheVNldCAoYWxsQ2xhc3NNZW1iZXJzKTsKCiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBEaXNwbGF5U2V0IChIYXNoU2V0PFN0cmluZz4gc2V0KQogICAgewogICAgICAgIENvbnNvbGUuV3JpdGUgKCJ7Iik7CiAgICAgICAgZm9yZWFjaCAoU3RyaW5nIGkgaW4gc2V0KQogICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGUgKCIgezB9IiwgaSk7CiAgICAgICAgfQogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lICgiIH0iKTsKICAgIH0KfSAvLyBIYXNoU2V0