Итерация по множествам
Часть раздела Логика и управление потоком путешествия по C# на Coddy. Урок 66 из 66.
Итерация по HashSet позволяет получить доступ к каждому элементу в множестве. В C# вы можете использовать различные подходы для итерации по HashSet.
Используя цикл foreach:
// Create a HashSet
HashSet<string> colors = new HashSet<string>();
// Add elements to the HashSet
colors.Add("Red");
colors.Add("Green");
colors.Add("Blue");
// Iterate through the HashSet
foreach (string color in colors)
{
Console.WriteLine(color);
}
Помните, что HashSet не сохраняет порядок вставки, поэтому элементы могут быть итерированы не в том же порядке, в котором они были добавлены.
Вы также можете сначала преобразовать в массив или список:
// Преобразовать в массив и итерировать
string[] colorArray = colors.ToArray();
for (int i = 0; i < colorArray.Length; i++)
{
Console.WriteLine(colorArray[i]);
}
Задание
ЛегкоСоздайте метод с именем PrintSetElements, который принимает HashSet целых чисел в качестве входного параметра. Метод должен пройтись по множеству и вывести каждый элемент на новой строке.
Например, если множество содержит [5, 2, 8], ваш метод должен вывести:
5 2 8
Попробуйте сами
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
public static void PrintSetElements(HashSet<int> set)
{
// Напишите свой код здесь
}
static void Main(string[] args)
{
HashSet<int> numbers = new HashSet<int>();
// Читаем первую строку для проверки формата
string firstLine = Console.ReadLine();
// Проверяем, если ввод в формате JSON массива
if (firstLine != null && firstLine.StartsWith("[") && firstLine.EndsWith("]"))
{
try
{
// Извлекаем содержимое между квадратными скобками
string arrayContent = firstLine.Substring(1, firstLine.Length - 2);
// Пытаемся разобрать содержимое JSON массива
string[] values = Regex.Split(arrayContent, @",\s*");
foreach (string value in values)
{
// Удаляем кавычки, если они есть
string cleanValue = value.Trim();
if (cleanValue.StartsWith("\"") && cleanValue.EndsWith("\""))
{
cleanValue = cleanValue.Substring(1, cleanValue.Length - 2);
}
// Парсим как целое число и добавляем в множество
if (int.TryParse(cleanValue, out int num))
{
numbers.Add(num);
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing JSON input: {ex.Message}");
return;
}
}
else
{
try
{
// Традиционный формат - читаем количество, затем элементы
int count = int.Parse(firstLine);
// Читаем каждый элемент и добавляем в множество
for (int i = 0; i < count; i++)
{
int num = int.Parse(Console.ReadLine());
numbers.Add(num);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing traditional input: {ex.Message}");
return;
}
}
PrintSetElements(numbers);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовОбъявление и инициализация 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиЗубчатые массивыОсновные операции с матрицамиПовторение — многомерные массивы4Методы управления потоком выполнения
Досрочный выходЗащитные условияОператоры перехода (goto)Break и ContinueУпрощение вложенных условных конструкций7Логические операторы: продвинутый уровень
Вычисление с коротким замыканиемУсловные логические операторыПриоритет операторовПовторение — продвинутые операторы2Продвинутое принятие решений
Множественные условияСложная логика BooleanСравнение If и SwitchВложенные конструкции SwitchПовторение — продвинутые решения5Обработка исключений
Основы Try-CatchТипы исключенийНесколько блоков CatchРабота с файламиБлок FinallyИспользование Using вместо Try-FinallyПользовательские исключенияПовторение — обработка ошибок3Улучшение циклов
Производительность цикловИтерация по сложным структурамКаждый тип циклаРефакторинг цикловПовторение — оптимизированные циклы6Обработка null
Основы ссылок на nullТипы значений, допускающие nullШаблоны проверки на nullЗащитное программированиеПовторение — безопасность при работе с null9HashMap, часть 1
Что такое HashMap?Объявление HashMapПроверка существования ключаДоступ к значениямИзменение словарейПовторение — HashMap12HashSet, часть 2
Математика — объединение HashSetМатематика — пересечение HashSetМатематика — разность множествМатематика — симметрическая разностьИтерация по множествамПотренируйтесь самостоятельно: Онлайн-компилятор C#