Overview

Assoc Grouping

Grouping data using associative arrays of arrays

Source Code

// Grouping data using associative arrays of arrays
type
  TStudent = record
    Name: String;
    Grade: String;
  end;

var students: array of TStudent;

procedure AddStudent(name, grade: String);
var s: TStudent;
begin
  s.Name := name; s.Grade := grade;
  students.Add(s);
end;

AddStudent('Alice', 'A');
AddStudent('Bob', 'B');
AddStudent('Charlie', 'A');
AddStudent('David', 'C');
AddStudent('Eve', 'B');

// Group students by grade
var groups: array [String] of array of String;

for var s in students do begin
  groups[s.Grade].Add(s.Name);
end;

PrintLn('Students by Grade:');
for var g in groups.Keys do begin
  PrintLn('Grade ' + g + ': ' + groups[g].Join(', '));
end;

Result

Students by Grade:
Grade C: David
Grade A: Alice, Charlie
Grade B: Bob, Eve
On this page