Hej, Hej Ted Jag kan garantera dig att även om du hittar en listtyp som har en funktion som heter FindDuplicate() eller liknande, som t ex en komponent från nätet eller liknande så innehåller den ända någon form av for-loop, om än på binär nivå. En for-loop bökig och kladdig??? Mycket renare kan du inte skriva det i det här fallet... Verkar onekligt så... Ett alternativ är ju att undvika dubletterna när man ploppar in dem... gör du med Contains(). <b>Jag kan garantera dig att även om du hittar en listtyp som har en funktion som heter FindDuplicate() eller liknande, som t ex en komponent från nätet eller liknande så innehåller den ända någon form av for-loop, om än på binär nivå. C#: ArrayList - att hitta "duplicates"/kopior
jag använder ArrayLists i mitt C# program, och vill nu ta fram antalet "duplicates" i den listan. I detta fall sparar jag en siffra som representerar en viss sak.
Jag letar efter en metod som kan räkna antal träffar i en ArrayList med ett visst värde - finns det?
Man kan ju förstås göra en for-loop, men det verkar väldigt bökigt o kladdigt så jag har letat lite efter en metod som gör det men har inte haft nån tur i mitt sökande =(
Någon som vet?
MVHSv: C#: ArrayList - att hitta "duplicates"/kopior
Vad jag vet så finns det inte någon sådan funktion. Men jag ser inte varför du tycker att det skulle vara bökigt med en for-loop, det är iaf det som skulle användas i den funktion som du letar efter.
public int numerOfDuplicates(ArrayList list, int value) {
int result = 0;
for ( int i = 0 ; i < list.Count ; i++ ) {
if ( list[i] == value ) result++;
}
return result;
}
eller lite kortare:
public int numerOfDuplicates(ArrayList list, int value) {
int result = 0;
foreach ( int item in list ) if ( item == value ) result++;
return result;
}
Eller så kan du göra en egen ArrayList som inkluderar den funktionen:
public class MyArrayList:ArrayList {
public int numerOfDuplicates(int value) {
int result = 0;
foreach ( int item in this ) if ( item == value ) result++;
return result;
}
}
// MvH Björne
PS. Såsen är skriven från huvet, så jag har antagligen lite syntax-fel.
Sv: C#: ArrayList - att hitta "duplicates"/kopior
Så du kommer inte undan :-)
//MikaelSv: C#: ArrayList - att hitta "duplicates"/kopior
Jag instämmer med föregående två talare, kanske med rekommendationen att skapa din egen listklass, då kan du bara plocka in den även i andra projekt för liknande funktionalitet.
/EmmaSv:C#: ArrayList - att hitta "duplicates"/kopior
Har alltid gillat redan byggda metoder för saker och ting... Som exempelvis PHP erbjudar - en massa fina funktione som fixar saker o ting... Känns meningslöst att behöva skriva ändå enkla sökningar själv.
Nåja, tack för tips o kommentarer!Sv: C#: ArrayList - att hitta "duplicates"/kopior
/MSv:C#: ArrayList - att hitta "duplicates"/kopior
Så du kommer inte undan :-)
</b>
det där behöver ju inte alls vara sant.
den skulle kunna ha en intern hashtabell där objektet är nyckel och värdet är antalet dubletter..
och i listans .add metod så skulle den kunna räkna upp antalet dubletter..
public int Add (object item)
{
int count = GetDuplicates(item)+1;
hashtable[item]=count;
base.add(item);
}
public int GetDuplicates(object item)
{
int count = 0;
if (hashtable.containskey(item)
{
count = (int)hashtable[item];
}
return count;
}
vilket dessutom skulle ge väldigt mycket bättre prestanda och du har stora listor...