SortedList - объединение двух списков с вычислениями - C#
Формулировка задачи:
Есть несколько списков двух типов:
A) SortedList<int, int>
B) SortedList<int, int>
Несколько списков типаA и один список типаB, в котором будет накапливаться информация по остальным спискам; значения ключей в списках типа1 могут совпадать, а могут и нет.
В результирующем списке типаB должны быть после обработки собраны ВСЕ ключи и обработанная информация по значениям из списоков типаА.
На примере двух списков типаА:
1) (1, 10) (4, 20) (5, 30)
2) (1, 8) (3, 10) (5, 1) (7, 0)
Результирующий список типаB должен получиться:
(1, 10+8) (3, 10) (4, 20) (5, 30+1) (7, 0)
Т.е. должно получиться вроде как объединение списков (Concat?, Join?), но с обработкой по сопадающим ключам.
Можно ли это сделать средствами SortedList просто перебрав в цикле все списки типаА?
Примечание: на самом деле у меня вместо простого суммирования значений будет более сложная обработка значений. Я её не указал, чтоб не усложнять пример
Решение задачи: «SortedList - объединение двух списков с вычислениями»
textual
Листинг программы
using System; using System.Collections.Generic; namespace ConsoleApplication17 { class Program { static void Main(string[] args) { SortedList<int, int> list1=new SortedList<int, int>(); list1[1]=8; list1[2]=9; SortedList<int, int> list2 = new SortedList<int, int>(); list2[1] = 4; list2[3] = 2; SortedList<int, int> result = new SortedList<int, int>(); Append(list1, result); Append(list2, result); } private static void Append(SortedList<int, int> list, SortedList<int, int> result) { foreach (KeyValuePair<int, int> p in list) { int s = 0; result.TryGetValue(p.Key, out s); result[p.Key] = s + p.Value; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д