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;
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д