using System;
using System.Collections.Generic;
// ------------------------------------------------------------
// Class representing a key/value pair
// ------------------------------------------------------------
public class Pair
{
public string Key { get; set; }
public int Value { get; set; }
public Pair(string key, int value) {
Key = key;
Value = value;
}
}
class Program
{
// ------------------------------------------------------------
// Build a List<Pair> (preserves original order)
// ------------------------------------------------------------
static List<Pair> MakePairList(string[] keys, int[] values) {
var result = new List<Pair>();
for (int i = 0; i < keys.Length; i++){
result.Add(new Pair(keys[i], values[i]));
}
return result;
}
// ------------------------------------------------------------
// Build a sorted List<Pair> (sorted by key)
// ------------------------------------------------------------
static List<Pair> MakeSortedPairs(string[] keys, int[] values) {
var list = MakePairList(keys, values);
list.Sort((a, b) => string.Compare(a.Key, b.Key, StringComparison.Ordinal));
return list;
}
// ------------------------------------------------------------
// Print parallel arrays
// ------------------------------------------------------------
static void PrintParallelArrays(string[] keys, int[] values) {
for (int i = 0; i < keys.Length; i++) {
Console.WriteLine($" {keys[i]} => {values[i]}");
}
}
// ------------------------------------------------------------
// Print List<Pair>
// ------------------------------------------------------------
static void PrintPairs(List<Pair> list) {
foreach (var p in list) {
Console.WriteLine($" {p.Key} => {p.Value}");
}
}
// ------------------------------------------------------------
// Main program demonstrating all three
// ------------------------------------------------------------
static void Main()
{
string[] keys = { "a", "b", "c" };
int[] values = { 1, 2, 3 };
var ordered = MakePairList(keys, values);
var sorted = MakeSortedPairs(keys, values);
Console.WriteLine("Parallel arrays:");
PrintParallelArrays(keys, values);
Console.WriteLine();
Console.WriteLine("List<Pair> (preserves order):");
PrintPairs(ordered);
Console.WriteLine();
Console.WriteLine("Sorted List<Pair> (sorted by key):");
PrintPairs(sorted);
}
}
/*
run:
Parallel arrays:
a => 1
b => 2
c => 3
List<Pair> (preserves order):
a => 1
b => 2
c => 3
Sorted List<Pair> (sorted by key):
a => 1
b => 2
c => 3
*/