webForumDet fria alternativet

Collections

23 svar · 1 136 visningar · startad av silfver

silfverMedlem sedan apr. 200312 679 inlägg
#1

Är det någon av er där ute som skulle kunna ge mig lite för- och nackdelar på någon av följande Collections:

  • Comparer
  • Queue
  • BitArray
  • DictionaryBase
  • ReadOnlyCollectionBase
  • CaseInsensitiveComparer
  • CollectionBase

Jag skulle gärna behöva lite kort exempelkod också. Ungefär som den här jag gjort för ArrayList:

protected void Page_Load(object sender, EventArgs e)
    {
        ArrayList countries = new ArrayList();
        countries.Add("none");
        countries.Add("Sweden");
        countries.Add("Norway");
        countries.Add("Finland");
        countries.Add("Iceland");
        countries.Insert(1, "Hungary");

        DropDownList1.DataSource=countries;
        DropDownList1.DataBind();
    }
<form id="form1" runat="server">
	<div>
	    <asp:DropDownList ID="DropDownList1" runat="server">
	    </asp:DropDownList>
	</div>
</form>

All hjälp uppskattas!

PaceMedlem sedan juni 20019 024 inlägg
#2

Vad är det du vill veta? Du har ju i princip lagt upp de klasser som finns i System.Collections. Alla har olika användningsområden.

Läs i dokumentationen för vad respektive typ gör och exempelkod.

emissionMedlem sedan dec. 19996 721 inlägg
#3

Comparer-klasserna är inte collections.

I övrigt...

http://msdn2.microsoft.com/en-us/library/system.collections.aspx

silfverMedlem sedan apr. 200312 679 inlägg
#4

Pace skrev:

Vad är det du vill veta? Du har ju i princip lagt upp de klasser som finns i System.Collections. Alla har olika användningsområden.

Läs i dokumentationen för vad respektive typ gör och exempelkod.

Jag ska skriva en rapport om tre/fyra olika typer av collections och behöver därför lite information om dem - samt lite exempelkod på hur de kan användas.

emission skrev:

Comparer-klasserna är inte collections.

I övrigt...

http://msdn2.microsoft.com/en-us/library/system.collections.aspx

Okay! Men den där länken kan nog vara till användning. Informationen går inte att få på svenska?

Ni har inte lust att ge mig lite enkla exempel på hur man kan använda någon av dem också?

Hashtable och SortedList ska också ingå i listan där uppe.

GladhMedlem sedan maj 20012 812 inlägg
#5

silfver skrev:

Jag ska skriva en rapport om tre/fyra olika typer av collections och behöver därför lite information om dem - samt lite exempelkod på hur de kan användas

Ni har inte lust att ge mig lite enkla exempel på hur man kan använda någon av dem också?

För 800 kronor exkl moms / timme, kan jag skriva rapporten till dig om du vill!!!!

Om det är meningen att du skall göra en rapport så blir den bra mycket bättre om du själv gräver ner dig i dokumentationen, sätter dig in i hur de olika collections fungerar (koda, koda, koda) och sedan sammanfattar de med egna ord. Dessutom så lär du dig bra så mycket mer än om du bara "snor" informationen från någonannan. Men visst det tar tid, men du har ju hela helgen på dig ;)

- M

NickemannenMedlem sedan aug. 20003 575 inlägg
#6

Oj läste inte alls...

En hint är ju att vissa listor är långsammare på att söka, visa är långsammare på insättningar av objekt osv osv.

silfverMedlem sedan apr. 200312 679 inlägg
#7

Gladh skrev:

silfver skrev:

Jag ska skriva en rapport om tre/fyra olika typer av collections och behöver därför lite information om dem - samt lite exempelkod på hur de kan användas

Ni har inte lust att ge mig lite enkla exempel på hur man kan använda någon av dem också?

För 800 kronor exkl moms / timme, kan jag skriva rapporten till dig om du vill!!!!

Om det är meningen att du skall göra en rapport så blir den bra mycket bättre om du själv gräver ner dig i dokumentationen, sätter dig in i hur de olika collections fungerar (koda, koda, koda) och sedan sammanfattar de med egna ord. Dessutom så lär du dig bra så mycket mer än om du bara "snor" informationen från någonannan. Men visst det tar tid, men du har ju hela helgen på dig ;)

- M

Jag hade ju inte direkt tänkt att sno någon information någonstans, men eftersom jag själv inte kan något om C# så behöver jag ganska så mycket hjälp. Och lite kodexempel hade varit ett steg i rätt riktning.

Jaja...

silfverMedlem sedan apr. 200312 679 inlägg
#8

Nickemannen skrev:

Oj läste inte alls...

En hint är ju att vissa listor är långsammare på att söka, visa är långsammare på insättningar av objekt osv osv.

Tack för hinten. Nu vet jag precis vad jag ska skriva.

PeddaMedlem sedan juni 20006 032 inlägg
#9

System.Collections

ArrayList
http://msdn2.microsoft.com/en-us/library/system.collections.arraylist_members(VS.90).aspx

SortedList
http://msdn2.microsoft.com/en-us/library/system.collections.sortedlist_members(VS.90).aspx

Queue
http://msdn2.microsoft.com/en-us/library/system.collections.queue_members(VS.90).aspx

Stack
http://msdn2.microsoft.com/en-us/library/system.collections.stack_members(VS.90).aspx

Hashtable
http://msdn2.microsoft.com/en-us/library/system.collections.hashtable_members(VS.90).aspx

BitArray
http://msdn2.microsoft.com/en-us/library/system.collections.bitarray_members(VS.90).aspx

StringCollection
http://msdn2.microsoft.com/en-us/library/system.collections.specialized.stringcollection_members(VS.90).aspx

StringDictionary
http://msdn2.microsoft.com/en-us/library/system.collections.specialized.stringdictionary_members(VS.90).aspx

ListDictionary
http://msdn2.microsoft.com/en-us/library/system.collections.specialized.listdictionary_members(VS.90).aspx

HybridDictionary
http://msdn2.microsoft.com/en-us/library/system.collections.specialized.hybriddictionary_members(VS.90).aspx

NameValueCollection
http://msdn2.microsoft.com/en-us/library/system.collections.specialized.namevaluecollection_members(VS.90).aspx

Det är bara att sätta igång och läsa. §e :e

PeddaMedlem sedan juni 20006 032 inlägg
#10

Kan ju även nämna några av mina favoriter och varför jag väljer just dom i vissa fall.

ArrayList - För att den går automatiskt ökar storleken allteftersom man fyller på med objekt.

SortedList - När man vill spara namn/värde par och ha dom sorterade.

Queue - First-in, First-out
Stack - Last-in, First-out
Passar bra i vissa fall att använda.

Hashtable - Bra att spara namn/värde par om man vill hämta antingen med index eller namn.

BitArray - Om man vill spara bool värden, true och false.

StringArray - Ökar automatiskt i storlek allteftersom man fyller på med strängar.

StringDictionary - Namn/värde par av strängar, hämtas med namn eller index.

silfverMedlem sedan apr. 200312 679 inlägg
#11

Tack Pedda. Det är sånt där jag vill höra. :bire

cokMedlem sedan dec. 2005664 inlägg
#12

ta en titt under namespace System.Collections.Specialized, där finns en del bra collections för vissa tillfällen.

PeddaMedlem sedan juni 20006 032 inlägg
#13

Silfver, om du kollar länkarna jag skrev så hittar du kodexempel under Methods i menyn.
Sen är det ju bra att läsa lite om dom olika och fundera på när man har nytta av dom.

Och som cok skrev så finns en del intressanta collections under System.Collections.Specialized, bl.a StringDictionary som jag senast använde mig av idag i ett projekt. :)

silfverMedlem sedan apr. 200312 679 inlägg
#14

Kan någon förklara för mig vad den här gör egentligen? Vad kan man använda den här till? Jag menar, det som står i listan är ju helt ologiskt?! One The?

using System;
using System.Collections;
public class SamplesHashtable  {

   public static void Main()  {

      // Creates and initializes a new Hashtable.
      Hashtable myHT = new Hashtable();
      myHT.Add( "one", "The" );
      myHT.Add( "two", "quick" );
      myHT.Add( "three", "brown" );
      myHT.Add( "four", "fox" );

      // Displays the Hashtable.
      Console.WriteLine( "The Hashtable contains the following:" );
      PrintKeysAndValues( myHT );
   }

   public static void PrintKeysAndValues( Hashtable myHT )  {
      Console.WriteLine( "\t-KEY-\t-VALUE-" );
      foreach ( DictionaryEntry de in myHT )
         Console.WriteLine( "\t{0}:\t{1}", de.Key, de.Value );
      Console.WriteLine();
   }
}
/* 
This code produces the following output.

The Hashtable contains the following:
        -KEY-   -VALUE-
        two:    quick
        three:  brown
        four:   fox
        one:    The
*/

Har ni något mer konkret man kan använda den här listan till i stället? För- och efternamn? Dagens rätt? Eller är det nåt jag missat här? :)

Fredde MannenMedlem sedan nov. 20014 054 inlägg
PhorpherMedlem sedan feb. 20002 300 inlägg
#16

silfver skrev:

Kan någon förklara för mig vad den här gör egentligen? Vad kan man använda den här till? Jag menar, det som står i listan är ju helt ologiskt?! One The?
Har ni något mer konkret man kan använda den här listan till i stället? För- och efternamn? Dagens rätt? Eller är det nåt jag missat här? :)

Hashtabeller är bra när du vill göra snabba "lookups".

Ett exempel (om än inte världens bästa) skulle kunna vara en adressbok där Key i hashtabellen är personnamnet och Value är personuppgifterna för en person.

silfverMedlem sedan apr. 200312 679 inlägg
#17

Phorpher skrev:

Hashtabeller är bra när du vill göra snabba "lookups".

Ett exempel (om än inte världens bästa) skulle kunna vara en adressbok där Key i hashtabellen är personnamnet och Value är personuppgifterna för en person.

Hur ska man då göra för att separera personuppgifterna? Ifall det nu är flera. Eller tänkte du bara nån kort mening eller liknande?

NickemannenMedlem sedan aug. 20003 575 inlägg
#18

HashTable eller Dictionary<Tkey, TValue> sorterar sina objekt efter nycklar.

t.ex. säg att du har ett tusental personer som du enkelt och snabbt vill kunna söka upp med hjälp av ett personnummer så kan du göra såhär.

Person person = new Person();

person.Name.First = "Niclas";
person.SecurityNumber = "1999-99-01";

hashTable.Add(person.SecurityNumber, person);

Person person = HashTable["1999-99-01"] as Person;

Dictionary är samma sak som en HashTable fast den är typad.

silfverMedlem sedan apr. 200312 679 inlägg
#19

Okej, då är jag med. Och för detta ändamål är hashtable det bästa valet?

NickemannenMedlem sedan aug. 20003 575 inlägg
#20

silfver skrev:

Okej, då är jag med. Och för detta ändamål är hashtable det bästa valet?

Om du har en nyckel och snabbt vill kunna hämta upp objekt utan att gå igenom en hel lista tills du hittar nyckeln så ja.

Man kanske kan jämföra det med en databas där man har en Nyckel som är indexerad.

131 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)