The Artima Developer Community
Sponsored Link

.NET Buzz Forum
Häufigkeiten von Wörtern in einer Liste berechnen

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
-

Posts: 1524
Nickname: nitronic
Registered: Jul, 2006

Norbert Eder works as a software architect.
Häufigkeiten von Wörtern in einer Liste berechnen Posted: May 24, 2007 10:15 AM
Reply to this message Reply

This post originated from an RSS feed registered with .NET Buzz by -.
Original Post: Häufigkeiten von Wörtern in einer Liste berechnen
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
Latest .NET Buzz Posts
Latest .NET Buzz Posts by -
Latest Posts From Norbert Eder - Living .NET

Advertisement
Heute fand ich eine Frage vor, wie denn ein Array bestehend aus unterschiedlichen Namen durchlaufen werden kann, um die einzelnen Namen und die Anzahl der Vorkommen ausgeben zu lassen. Mein Vorschlag wäre an dieser Stelle eine eigens abgeleitete List<string>. Dies würde so aussehen:
public class NameCounterList : List<string>
{
    private Dictionary<string, int> _names = 
        new Dictionary<string, int>();

    public new void Add(string item)
    {
        base.Add(item);

        if (_names.ContainsKey(item.ToLower()))
            _names[item.ToLower()]++;
        else
            _names.Add(item.ToLower(), 1);
    }

    public new void Clear()
    {
        base.Clear();
        _names.Clear();
    }

    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        if (this._names.Count > 0)
        {
            Dictionary<string, int>.Enumerator en = 
                this._names.GetEnumerator();
            while (en.MoveNext())
            {
                sb.Append(en.Current.Key);
                sb.Append(": ");
                sb.Append(en.Current.Value.ToString());
                sb.Append(System.Environment.NewLine);
            }
        }
        return sb.ToString();
    }
}

Die Aufrufe können dann wie folgt aussehen:
NameCounterList ncl = new NameCounterList();
ncl.Add("Peter");
ncl.Add("Harry");
ncl.Add("Sabine");
ncl.Add("Sabine");
ncl.Add("Jörg");
ncl.Add("Harry");
ncl.Add("Harry");
Console.WriteLine(ncl.ToString());

Wodurch sich folgender Output ergibt:
peter: 1
harry: 3
sabine: 2
jörg: 1

Anmerkungen
An dieser Stelle können natürlich noch Verbesserungen vorgenommen werden. Beispielsweise wäre es denkbar, die Werte zu sortieren. Auf der anderen Seite muss jedoch auch erwähnt werden, dass es für große Datenmengen durchaus bessere Möglichkeiten gibt, eine derartige Funktionalität abzubilden. Für kleinere Anwendungsfälle sollte diese Variante aber durchaus ausreichen.

Read: Häufigkeiten von Wörtern in einer Liste berechnen

Topic: [VSTS] Last Minute Termine der Roadshow Previous Topic   Next Topic Topic: Einstieg in Silverlight gesucht?

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use