Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 10.12.2016
Сообщений: 17

Добавление элемента в список списков

30.10.2017, 22:50. Показов 5327. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Задача заключается в том, что в списке слов надо сгруппировать их по алфавиту. Например, подается на вход список
{"Bab", "C", "AAb", "Abc", "Cab","B","Ac", "Cad", "Ca"}
Результат должен быть списком списков
{{"AAb", "Abc", "Ac"} {"Bab", "B"} {"Cab", "Cad", "C", "Ca"}}
Я создаю список списков
C#
1
var listOfLists = new List<List<string>>();
потом пробую добавить значение в список
C#
1
listOfLists[0].Add(list[i]);
Компилятор выдает ошибку ThrowArgumentOutOfRangeException. Думал, что проблема в том, что listOfLists на момент обращения к его 0-му элементу еще пустой. Но
C#
1
2
llistOfLists = new List<List<string>>(1);
listOfLists[0].Add(list[i]);
тоже ничего не дает
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.10.2017, 22:50
Ответы с готовыми решениями:

Добавление нового элемента в список после указанного элемента по значению информационного поля
Добавление нового элемента в список после указанного элемента по значению информационного поля.

Добавление элемента в список list
В список нужно на каждой итерации добавить новый элемент, при этом, сохранить добавленные раннее. List&lt;Tuple&lt;int, int&gt;&gt;...

Добавление элемента в связанный список
if (first == null) { first = new ListItem&lt;T&gt;() { Data = element }; current = first; ...

4
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
30.10.2017, 23:01
Лучший ответ Сообщение было отмечено sabatt как решение

Решение

sabatt, нужно сначала создать элемент в списке, а уже потом добавлять в него
C#
1
2
3
llistOfLists = new List<List<string>>(); // Размер тут особо не нужен. Точнее если уж указывать значение, то скорее 33 чем 1 т.к. в алфавите 33 буквы
llistOfLists.Add(new List<string>()) // !!!
listOfLists[0].Add(list[i]);
1
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
30.10.2017, 23:02
C#
1
listOfLists.Add(list[i]);
Надо писать вот так.
Потому что запись listOfLists[0] уже обращается к первому вложенному списку, которого ещё нет. И добавлять туда надо не list, а string

Затупил. Думал, что list[i] это список.
Вобщем выше уже дали ответ
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
30.10.2017, 23:15
если нужен коротЕнький вариант
C#
1
2
3
4
5
6
7
8
9
            var lst = new List<string>() { "Bab", "C", "AAb", "Abc", "Cab", "B", "Ac", "Cad", "Ca","" };
            var listOfLists = lst.GroupBy(x => x.FirstOrDefault()).OrderBy(x=>x.Key).Select(x=>x.OrderBy(y=>y).ToList()).ToList();
            foreach(var item in listOfLists)
            {
                foreach(var i in item)
                {
                    Console.WriteLine(i);
                }
            }
1
1 / 1 / 0
Регистрация: 10.12.2016
Сообщений: 17
31.10.2017, 15:49  [ТС]
Всем спасибо, разобрался!
если нужен коротЕнький вариант
C#
1
2
3
4
5
6
7
8
       var lst = new List<string>() { "Bab", "C", "AAb", "Abc", "Cab", "B", "Ac", "Cad", "Ca","" };
            var listOfLists = lst.GroupBy(x => x.FirstOrDefault()).OrderBy(x=>x.Key).Select(x=>x.OrderBy(y=>y).ToList()).ToList();
            foreach(var item in listOfLists)
            {
                foreach(var i in item)
                {
                    Console.WriteLine(i);
                }
}
Увы, LINQ для меня слишком сложно почему-то. Попробую потом разобрать ваш вариант, а пока у меня получилось сделать как советовали выше. Правда, ужасно некрасивый код получился)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2017, 15:49
Помогаю со студенческими работами здесь

Добавление элемента в список перед текущим
Ребят помогите, не хочет добавлять элемент перед текущим и не видит(ListItem&lt;T1&gt;), подскажите в чем ошибки? public class List&lt;T&gt;:...

Копирование данных двумерного массива состоящего из списков в список списков.
Для нахождения МСТ (минимального остового дерева) написал функцию, которая принимает масив - гарф. private List&lt;Point&gt;...

Добавление элемента в список, если таковой отсутствует
У меня есть текстовый файл. В нём присутствуют названия компаний. Мне нужно создать список компаний, находить их по ключевому слову в...

Двусвязный кольцевой список - добавление элемента перед целевым
Examples.Collections.Generic.DoublyLinkedCycledList&lt;int&gt; list10 = new Examples.Collections.Generic.DoublyLinkedCycledList&lt;int&gt;(); ...

Списки. Инициализация, добавление элемента в начало и после другого элемента. Удаление элемента
uses crt; type list= ^item; item=record data: integer; next:list; end; var l:list; procedure print;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru