Как перевести из list в string c
Перейти к содержимому

Как перевести из list в string c

  • автор:

Коллекции

Хотя в языке C# есть массивы, которые хранят в себе наборы однотипных объектов, но работать с ними не всегда удобно. Например, массив хранит фиксированное количество объектов, однако что если мы заранее не знаем, сколько нам потребуется объектов. И в этом случае намного удобнее применять коллекции. Еще один плюс коллекций состоит в том, что некоторые из них реализует стандартные структуры данных, например, стек, очередь, словарь, которые могут пригодиться для решения различных специальных задач. Большая часть классов коллекций содержится в пространстве имен System.Collections.Generic .

Класс List из пространства имен System.Collections.Generic представляет простейший список однотипных объектов. Класс List типизируется типом, объекты которого будут хранится в списке.

Мы можем создать пустой список:

List people = new List();

В данном случае объект List типизируется типом string . А это значит, что хранить в этом списке мы можем только строки.

Можно сразу при создании списка инициализировать его начальными значениями. В этом случае элементы списка помещаются после вызова конструктора в фигурных скобках

List people = new List() < "Tom", "Bob", "Sam" >;

В данном случае в список помещаются три строки

Также можно при создании списка инициализировать его элементами из другой коллекции, например, другого списка:

var people = new List() < "Tom", "Bob", "Sam" >; var employees = new List(people);

Можно совместить оба способа:

var people = new List() < "Tom", "Bob", "Sam" >; var employees = new List(people);

В данном случае в списке employees будет четыре элемента ( < "Tom", "Bob", "Sam", "Mike" >) — три добавляются из списка people и один элемент задается при инициализации.

Начиная с версии C# 12 для определения списков можно использовать выражения коллекций, которые предполагают заключение элементов коллекции в квадратные скобки:

List people = ["Tom", "Bob", "Sam"]; List employees = [];// пустой список

Подобным образом можно работать со списками других типов, например:

List people = new List() < new Person("Tom"), new Person("Bob"), new Person("Sam") >; class Person < public string Name < get;>public Person(string name) => Name = name; >

Установка начальной емкости списка

Еще один конструктор класса List принимает в качестве параметра начальную емкость списка:

List people = new List(16);

Указание начальной емкости списка позволяет в будущем увеличить производительность и уменьшить издержки на выделение памяти при добавлении элементов. Поскольку динамическое добавление в список может приводить на низком уровне к дополнительному выделению памяти, что снижает производительность. Если же мы знаем, что список не будет превышать некоторый размер, то мы можем передать этот размер в качестве емкости списка и избежать дополнительных выделений памяти.

Также начальную емкость можно установить с помощью свойства Capacity , которое имеется у класса List.

Обращение к элементам списка

Как и массивы, списки поддерживают индексы, с помощью которых можно обратиться к определенным элементам:

var people = new List() < "Tom", "Bob", "Sam" >; string firstPerson = people[0]; // получаем первый элемент Console.WriteLine(firstPerson); // Tom people[0] = "Mike"; // изменяем первый элемент Console.WriteLine(people[0]); // Mike

Длина списка

С помощью свойства Count можно получить длину списка:

var people = new List() < "Tom", "Bob", "Sam" >; Console.WriteLine(people.Count); // 3

Перебор списка

C# позволяет осуществить перебор списка с помощью стандартного цикла foreach :/p>

var people = new List() < "Tom", "Bob", "Sam" >; foreach (var person in people) < Console.WriteLine(person); >// Вывод программы: // Tom // Bob // Sam

Также можно использовать другие типы циклов и в комбинации с индексами перебирать списки:

var people = new List() < "Tom", "Bob", "Sam" >; for (int i = 0; i

Методы списка

Среди его методов можно выделить следующие:

  • void Add(T item) : добавление нового элемента в список
  • void AddRange(IEnumerable collection) : добавление в список коллекции или массива
  • int BinarySearch(T item) : бинарный поиск элемента в списке. Если элемент найден, то метод возвращает индекс этого элемента в коллекции. При этом список должен быть отсортирован.
  • void CopyTo(T[] array) : копирует список в массив array
  • void CopyTo(int index, T[] array, int arrayIndex, int count) : копирует из списка начиная с индекса index элементы, количество которых равно count, и вставляет их в массив array начиная с индекса arrayIndex
  • bool Contains(T item) : возвращает true , если элемент item есть в списке
  • void Clear() : удаляет из списка все элементы
  • bool Exists(Predicate match) : возвращает true , если в списке есть элемент, который соответствует делегату match
  • T? Find(Predicate match) : возвращает первый элемент, который соответствует делегату match. Если элемент не найден, возвращается null
  • T? FindLast(Predicate match) : возвращает последний элемент, который соответствует делегату match. Если элемент не найден, возвращается null
  • List FindAll(Predicate match) : возвращает список элементов, которые соответствуют делегату match
  • int IndexOf(T item) : возвращает индекс первого вхождения элемента в списке
  • int LastIndexOf(T item) : возвращает индекс последнего вхождения элемента в списке
  • List GetRange(int index, int count) : возвращает список элементов, количество которых равно count, начиная с индекса index.
  • void Insert(int index, T item) : вставляет элемент item в список по индексу index. Если такого индекса в списке нет, то генерируется исключение
  • void InsertRange(int index, collection) : вставляет коллекцию элементов collection в текущий список начиная с индекса index. Если такого индекса в списке нет, то генерируется исключение
  • bool Remove(T item) : удаляет элемент item из списка, и если удаление прошло успешно, то возвращает true. Если в списке несколько одинаковых элементов, то удаляется только первый из них
  • void RemoveAt(int index) : удаление элемента по указанному индексу index. Если такого индекса в списке нет, то генерируется исключение
  • void RemoveRange(int index, int count) : параметр index задает индекс, с которого надо удалить элементы, а параметр count задает количество удаляемых элементов.
  • int RemoveAll((Predicate match)) : удаляет все элементы, которые соответствуют делегату match. Возвращает количество удаленных элементов
  • void Reverse() : изменяет порядок элементов
  • void Reverse(int index, int count) : изменяет порядок на обратный для элементов, количество которых равно count, начиная с индекса index
  • void Sort() : сортировка списка
  • void Sort(IComparer? comparer) : сортировка списка с помощью объекта comparer, который передается в качестве параметра

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

List people = new List () < "Tom" >; people.Add("Bob"); // добавление элемента // people = < "Tom", "Bob" >; people.AddRange(new[] < "Sam", "Alice" >); // добавляем массив // people = < "Tom", "Bob", "Sam", "Alice" >; // также можно было бы добавить другой список // people.AddRange(new List()< "Sam", "Alice" >); people.Insert(0, "Eugene"); // вставляем на первое место // people = < "Eugene", "Tom", "Bob", "Sam", "Alice" >; people.InsertRange(1, new string[] ); // вставляем массив с индекса 1 // people = < "Eugene", "Mike", "Kate", "Tom", "Bob", "Sam", "Alice" >; // также можно было бы добавить другой список // people.InsertRange(1, new List()< "Mike", "Kate" >);

Удаление из списка

var people = new List () < "Eugene", "Mike", "Kate", "Tom", "Bob", "Sam", "Tom", "Alice" >; people.RemoveAt(1); // удаляем второй элемент // people = < "Eugene", "Kate", "Tom", "Bob", "Sam", "Tom", "Alice" >; people.Remove("Tom"); // удаляем элемент "Tom" // people = < "Eugene", "Kate", "Bob", "Sam", "Tom", "Alice" >; // удаляем из списка все элементы, длина строки которых равна 3 people.RemoveAll(person => person.Length == 3); // people = < "Eugene", "Kate", "Alice" >; // удаляем из списка 2 элемента начиная с индекса 1 people.RemoveRange(1, 2); // people = < "Eugene">; // полностью очищаем список people.Clear(); // people = < >;

Поиск и проверка элемента

var people = new List () < "Eugene", "Mike", "Kate", "Tom", "Bob", "Sam" >; var containsBob = people.Contains(«Bob»); // true var containsBill = people.Contains(«Bill»); // false // проверяем, есть ли в списке строки с длиной 3 символа var existsLength3 = people.Exists(p => p.Length == 3); // true // проверяем, есть ли в списке строки с длиной 7 символов var existsLength7 = people.Exists(p => p.Length == 7); // false // получаем первый элемент с длиной в 3 символа var firstWithLength3 = people.Find(p => p.Length == 3); // Tom // получаем последний элемент с длиной в 3 символа var lastWithLength3 = people.FindLast(p => p.Length == 3); // Sam // получаем все элементы с длиной в 3 символа в виде списка List peopleWithLength3 = people.FindAll(p => p.Length == 3); // peopleWithLength3

Получение диапазона и копирование в массив

List people = new List() ; // получаем диапазон со второго по четвертый элемент var range = people.GetRange(1, 3); // range = < "Tom", "Mike", "Sam">; // копируем в массив первые три элемента string[] partOfPeople = new string[3]; people.CopyTo(0, partOfPeople, 0, 3); // partOfPeople = < "Eugene", "Tom", "Mike">;

Расположение элементов в обратном порядке

var people = new List () < "Eugene", "Tom", "Mike", "Sam", "Bob" >; // переворачиваем весь список people.Reverse(); // people = < "Bob","Sam", "Mike", "Tom", "Eugene">; var people2 = new List() < "Eugene", "Tom", "Mike", "Sam", "Bob" >; // переворачиваем часть только 3 элемента с индекса 1 people2.Reverse(1, 3); // people2 = < "Eugene","Sam", "Mike", "Tom", "Bob" >;

Быстрый перевод List в string

Author24 — интернет-сервис помощи студентам

Есть List с огромным количеством строк (с действительно огромным количеством строк). Как его можно быстро записать в одну строку ?

foreach(string s in list_1) string_1 = string_1 + s;

то запись в одну строку происходит минут 40-50.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Перевод из List в List
Всем доброго времени суток. Такой вопрос, как можно перевести List<int> в List<String>, и можно ли.

Разбить List на несколько обьектов c List
Задумался как я то кусочками все делить оказалось не так уж просто :scratch: List<string>.

Как передать list в поток и как такой же list вывести из потока?
Как передать list<string> в поток и как такой же list<string> вывести из потока в richtextbox.

Заполнить Dictionary> из файла ресурсов
Всем привет! У меня появилась проблема, мне нужно заполнить Dictionary<string, list<string>> из.

Эксперт .NET

11960 / 8285 / 1262
Регистрация: 21.01.2016
Сообщений: 31,187

Stud_force, подсчитать суммарное количество символов, выделить массив char нужного размера, последовательно заполнить его содержимым всех строк, передать массив в конструктор string .

192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086

Лучший ответ

Сообщение было отмечено Usaga как решение

Решение

var result = String.Join(", ", list_1.ToArray());

померяй сколько по времени?

Добавлено через 3 минуты

ЦитатаСообщение от Stud_force Посмотреть сообщение

Как перевести string[] в List?

Добрый день!
Вроде бы банальный вопрос но как то мыслей нет как это сделать, подскажите.
Заранее благодарен.

  • Вопрос задан более трёх лет назад
  • 1908 просмотров

Комментировать

Решения вопроса 1

var stringArray = new string[];
var list = new List(stringArray)
или
list.AddRange(stringArray);
или
List list = stringArray.OfType().ToList();

Ответ написан более трёх лет назад

Нравится 1 2 комментария

Преобразование списка строк в строку с разделителями

Существует распространенная ситуация, когда требуется превратить список строк в одну строку, в которой значения из списка разделены определенным символом. Допустим, есть список:

list = ['яблоко', 'банан', 'апельсин']

Необходимо превратить его в строку, где все элементы списка разделены запятой:

string = 'яблоко,банан,апельсин'

Решение этой задачи в Python довольно простое и красивое. Используется метод join() , который объединяет все элементы списка в одну строку с заданным разделителем.

Вот как это выглядит на практике:

list = ['яблоко', 'банан', 'апельсин'] string = ','.join(list)

В результате выполнения этого кода переменная string будет содержать строку ‘яблоко,банан,апельсин’.

Метод join() не ограничивается использованием только запятой в качестве разделителя. Вместо запятой можно использовать любую строку.

Например, если нужно, чтобы элементы были разделены точкой с запятой, код будет выглядеть так:

list = ['яблоко', 'банан', 'апельсин'] string = ';'.join(list)

В этом случае в переменной string окажется строка ‘яблоко;банан;апельсин’.

Метод join() — это простой и эффективный способ преобразования списка строк в строку с разделителями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *