Hey,
Ich brauche eine Klasse, welche Listenähnliche funktionen beinhaltet, aber wo FindIndex schneller ist, dafür habe ich jetzt folgende klasse geschrieben:
Nur funktioniert das ganze noch nicht so ganz. Findindex funktioniert zwar, und ist immens schneller als das findindex einer normalen liste, nur gibt elementAt(findIndex("meinWort")) nicht wieder "meinWort" aus. Findet ihr den Logikfehler?
Mfg
Ich brauche eine Klasse, welche Listenähnliche funktionen beinhaltet, aber wo FindIndex schneller ist, dafür habe ich jetzt folgende klasse geschrieben:
C#-Quellcode
- class findAbleWords
- {
- Dictionary<char, int> WordListOffset = new Dictionary<char, int>();
- Dictionary<char, List<string>> WordList = new Dictionary<char, List<string>>();
- public findAbleWords(string[] input)
- {
- foreach (var item in input)
- {
- if (!WordList.ContainsKey(item[0]))
- {
- WordList.Add(item[0],new List<string>());
- }
- WordList[item[0]].Add(item);
- }
- foreach (var item in WordList.Keys)
- {
- WordListOffset.Add(item,WordList[item].Count);
- }
- }
- public int findIndex(string item)
- {
- return WordList[item[0]].FindIndex(a => a == item)+ WordList[item[0]].Count;
- }
- public string ElementAt(int elem)
- {
- int elem_t = elem;
- char breakelem = 'a';
- foreach (var item in WordListOffset.Keys)
- {
- if (elem_t - WordListOffset[item] >= 0)
- {
- elem_t = elem_t - WordListOffset[item];
- }else
- {
- breakelem = item;
- break; //93246
- }
- }
- return WordList[breakelem][elem_t];
- }
- }
Nur funktioniert das ganze noch nicht so ganz. Findindex funktioniert zwar, und ist immens schneller als das findindex einer normalen liste, nur gibt elementAt(findIndex("meinWort")) nicht wieder "meinWort" aus. Findet ihr den Logikfehler?
Mfg
Wer Rechtschreibfehler findet darf sie behalten
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „WeLoveBurgers“ ()