Loading...
anto84 avatar anto84 16 Точки

c# структура от данни - dictionary но с възможност за multiple вкарване не един и същ key

Здравейте,

искам да направя на C# структура от данни която да ми реши следния проблем - структурата трябва да може да приема различни имена за ключ и да изкарва ип-адреси в лист и да събира времето за логин на юзъра:

name ip-adress time-logged

alex 10.10.17.33 20min
peter 10.10.17.33 20min
ivan 10.10.17.33 20min
alex 212.50.118.81 30min

резултат

alex --> ip-adress: 10.10.17.33, 212.50.118.81, time-logged: 50min
ivan --> ip-adress 10.10.17.33 time-logged: 20min
peter --> ip-adress 10.10.17.33 time-logged: 20min

Ако използвам 

Dictionary<string, Tuple<List<string>, int>> map = new Dictionary<string, Tuple<List<string>, int>>();

ми гърми на ред4 когато вкарвам ключ "alex" за втори път и казва че вече е вкаран item със същия ключ. Явно Dictionary приема само уникални ключове.

Има ли някой идея как може да стане това с Dictionary или с друга по-подходяща структура?

 

 

Тагове:
1
Programming Basics 24/01/2015 22:15:15
Filkolev avatar Filkolev 4482 Точки

След като си добавил в речника запис с даден ключ на теб не ти трябва да добавяш нов, просто обнови данните, асоциирани с този ключ. Например, дават ти:

alex 10.10.17.33 20min
alex 212.50.118.81 30min

След първия ред ще имаш ключ alex, със стойност списък (с един елемент) и число - 20.

След втория ред просто добави ип-то към списъка на alex, а числото увеличи с новата стойност и получаваш 20 + 30 = 50.

ип-тата сортирани ли трябва да са? Ако не - ползвай HashSet, той пази само уникални стойности, т.е. няма да има повторение на ип-та. Ако трябва и да са сортирани, ползвай SortedSet.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.