Ich habe eine Arraylist, die Werte hat einige von ihnen wiederholt werden. Ich brauche die Anzahl der wiederholten Werte. Ist das in C# möglich?wie finden Sie keine doppelten Werte in Arraylist
Antwort
Wenn Ihr Objekt entspricht Methode korrekt nur Distinct()
von System.Linq
Namespace overrided rufen sie
Sie die Arraylist erfordern homogene und rief Cast<YourType>()
vor Distinct()
zu sein.
Dann subtrahieren Sie die Länge der ArrayList von der Distinct-Sequenz.
arraList.Count - arraList.Cast<YourType>().Distinct().Count()
wird es werfen Ausnahme, wenn Ihre Artikel in Arraylist nicht vom Typ ist YourType
, und wenn Sie OfType<YourType>
verwenden filtert Objekte Objekte vom Typ YourType
.
, aber wenn Sie die Anzahl jedes Wiederholungselements möchten, ist dies nicht Ihre Antwort.
Deutlich entfernte Dups, nicht gefunden;) –
Es ist besser zu Verwenden Sie 'OfType
Sicher hast du Recht –
here ist ein großer Beitrag, wie es mit LINQ zu tun
var query =
from c in arrayList
group c by c into g
where g.Count() > 1
select new { Item = g.Key, ItemCount = g.Count()};
foreach (var item in query)
{
Console.WriteLine("Country {0} has {1} cities", item.Item , item.ItemCount);
}
er sagt, er verwendet linq nicht, aber das ist genau das, was ich eingeben würde. – phillip
myList.GroupBy(i => i).Count(g => g.Count() > 1)
und wenn Sie speziell Arraylist müssen
ArrayList arrayList = new ArrayList(new[] { 1, 1, 2, 3, 4, 4 });
Console.WriteLine(arrayList.ToArray().GroupBy(i => i).Count(g => g.Count() > 1));
Basierend auf Kommentare von Plakat
ArrayList arrayList = new ArrayList(new[] { 1, 1, 2, 3, 4, 4 });
Console.WriteLine(arrayList.ToArray().Count(i => i == 4));
-1: Es zeigt nicht die richtige Anzahl von Duplikaten und auch das gezeigte Beispiel ist mit Liste, nicht mit ArrayList. –
@ AS-CII wie? –
+1 brauchen Sie nicht so etwas: '.GroupBy (i => i) .Zahl (g => g ==" foo "&& g.Count()> 1)' zusätzlich? – hunter
public Dictionary<T,int> CountOccurences<T>(IEnumerable<T> items) {
var occurences = new Dictionary<T,int>();
foreach(T item in items) {
if(occurences.ContainsKey(item)) {
occurences[item]++;
} else {
occurences.Add(item, 1);
}
}
return occurences;
}
+1 Einfach und leicht zu verstehen. Obwohl ich denke, du meintest "Vorkommnisse.Zulegen", nicht "Vorkommen.Put". –
Ja, ich weiß nicht, warum so viele Leute darauf bestehen, Linq für jedes Problem zu benutzen. Das ist die meiste Zeit ziemlich unbezahlbar. –
int countDup = ArrayList1.Count - ArrayList1.OfType<object>().Distinct().Count();
Wenn also ein Gegenstand 5 Mal wiederholt wird, würden Sie 4 wiederholte Gegenstände zurückgeben? –
ändern Sie die Länge zu Graf Typ :-) –
@Jani: Danke, Bruder! =) – abatishchev
var items = arrayList.Cast<object>()
.GroupBy(o => o)
.Select(g => new { Item = g, Count = g.Count() })
.ToList();
jedes Element der Ergebnisliste wird zwei Eigenschaften haben: - Graf Quelle Artikel - Artikel
in Quellenliste zählen Sie es sortieren könnte, dann wird es sehr einfach.
Bearbeiten: Sortierung wird ein strittiger Punkt, wenn auf diese Weise getan.
Arraylist myList = new ArrayList();
myList = someStuff;
Dictionary<object, int> counts = new Dictionary<object,int>();
foreach (object item in myList)
{
if (!counts.ContainsKey(item))
{
counts.Add(item,1);
}
else
{
counts[item]++;
}
}
Edit:
Einige kleinere Dinge variieren können (nicht sicher über einige meiner eckigen Klammern, ich bin ein wenig rostig mit C#), aber das Konzept sollte Prüfung standhalten.
Ich verstehe nicht, warum das sortiert werden muss. – Jason
Wenn Sie es nicht sortieren, müssten Sie die Liste für jedes Objekt (foreach innerhalb einer foreach) scannen, das macht es viel schneller. –
nehme an, es gibt foo 3 mal, gebühr 2 mal, wie bekomme ich foo = 3 und fee = 2 zu sehen. Bitte vergib mir, wenn die Frage sehr einfach in der Natur war – Prady
Sie können diese vielen Möglichkeiten nutzen. Der erste, der zu mir kommt, würde durch die Werte in Ihrer Array-Liste zu einer Gruppe sein, und nur die Gruppierung zählt zurückkehren, die älter als 1.
ArrayList al = new ArrayList();
al.Add("a");
al.Add("b");
al.Add("c");
al.Add("f");
al.Add("a");
al.Add("f");
int count = al.ToArray().GroupBy(q => q).Count(q=>q.Count()>1);
count
den Wert von 2 als a
und f
dupliziert zurückzukehren.
- 1. So finden Sie die doppelten Werte in der gleichen Zeile
- 2. So entfernen Sie doppelten Wert aus Arraylist in Android
- 3. Wie keine doppelten Werte von Datenbanktabelle Client-Formular in PHP
- 4. Wie summiere Werte in ArrayList
- 5. Finden Sie gleiche Werte zwischen 2 ArrayList und Return als eine andere ArrayList
- 6. Arraylist mit Objekten - wie Objekte mit doppelten Werten hinzuzufügen
- 7. finden doppelten Wert in mehrdimensionalen Array
- 8. Ausgewähltes Datum wie in ArrayList zu finden?
- 9. Benachbartes Element in ArrayList finden
- 10. Finden Sie ein Objekt in ArrayList und entfernen Sie es
- 11. Funken Finden Sie doppelten Datensätze für ein Feld in RDD
- 12. So zeigen Sie keine doppelten Datensätze in SQL Server an
- 13. So speichern Sie Werte in einer Arraylist mit geschachtelten Loops
- 14. Finden Sie durch 3 teilbare Zahlen in einer ArrayList
- 15. Doppelten Wert von Zeichenfolgenarray finden
- 16. Wie bekomme ich HashTable-Werte als Arraylist?
- 17. Regex Suche nach doppelten numerischen Werte in einer Textdatei
- 18. So finden Sie Primzahlen mit einer ArrayList in Java
- 19. Die ArrayList-Werte in TextVitew anzeigen
- 20. Arraylist speichert nur zwei Werte
- 21. ArrayList Vergleichen und Get Shared Werte
- 22. Suchen Sie doppelte Werte in einer Arraylist ohne Verwendung von LINQ
- 23. jQuery - finden Sie keine Funktion?
- 24. Wie eine zwei Dimension Arraylist
- 25. Wie alle Werte in Arraylist auf hashmap in Android setzen?
- 26. Wie Sie doppelten Ereignisbehandlungscode umgestalten
- 27. , wie die Werte einer Arraylist in Servlet mit Ajax-Aufruf
- 28. Finden Sie eine String von einem Arraylist als CharSequence eines anderen Arraylist String in Java 8
- 29. Doppelten Datensatz für 3 gemeinsame Attribute finden
- 30. Mehrere Werte in einem Arraylist Schlüssel
Möchten Sie "klassische" C# -Syntax oder verwendet Linq OK? (d. h. verwenden Sie 3,5?) – Greg
Möchten Sie eine Anzahl von Elementen, die wiederholt werden oder eine Gesamtzahl von Wiederholungen? Bedeutung, 'foo' ist in der Liste dreimal, ist das 1 Element, das wiederholt wird oder sind es 2 Wiederholungen? –
Ich brauche in reinem C#, es ist keine der Zeiten foo ist – Prady