Хранение массива значений по ключу - C#
Формулировка задачи:
Стоит задача, проходясь по массиву, сохранить места расположения байтов. Например 63 - 2,15,29,54 и тд. То есть каждый раз когда вновь находим знакомый байт, добавляем в массив его расположение. Была мысль сделать через Dictioonary list'ов, так что б каждый байт был ключём. Но вроде как таким способом невозможно добавлять каждый раз число в лист. Как лучше всего это организовать?
static Dictionary<byte,List<int>> Statistic = new Dictionary<byte,List<int>>();
Решение задачи: «Хранение массива значений по ключу»
textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int>[] pos = new List<int>[256];
byte[] array = { 1, 2, 3, 4, 2, 2, 3 };
for (int i = 0; i < array.Length; ++i)
{
int b = array[i];
if (pos[b] == null) pos[b] = new List<int>();
pos[b].Add(i);
}
for (int i = 0; i < 256; ++i)
{
if (pos[i] != null) Console.WriteLine(String.Format("Byte {0} positions: {1}.", i, String.Join(", ", pos[i])));
}
}
}