Häufigkeit von Array Elementen berechnen

Tuts4you

Erfahrenes Mitglied
Hallo Leute!
Könnt ihr mir tipps geben wie ich die Häufigkeit von Array-Elementen berechnen kann?

PHP:
5.0
5.0
5.0
6.4031242374328485
7.810249675906654
7.810249675906654
9.219544457292887
Ausgabe soll so aussehen:
PHP:
5 | Häufigkeit: 3
6,4...| Häufigkeit: 1
7,8...| Häufigkeit: 2
9,2...| Häufigkeit: 1
danke für eure Hilfe!

Michael
 
Hallo!

Schau mal hier:
Java:
Double[] numbers = { 5.0, 5.0, 5.0, 6.4031242374328485, 7.810249675906654, 7.810249675906654,
      9.219544457292887 };

    List<Double>  numberList = Arrays.asList(numbers);
    System.out.println(Collections.frequency(numberList, 5.0));
    System.out.println(Collections.frequency(numberList, 7.810249675906654));
    System.out.println(Collections.frequency(numberList, 6.4031242374328485));
    System.out.println(Collections.frequency(numberList, 9.219544457292887));

Ausgabe:
Code:
3
2
1
1
Gruß Tom
 
Hi.

Du machst einfach eine Iteration über die Arrayelemente und zählst einfach für jedes Element dessen Vorkommen in einer assoziativen Datenstruktur wie z.B. einer HashMap.

Gruß
 
Hi,

ich würde es so machen.

Code:
kopieMeinesArrays = meinArray;
//Die ist STATIC
Arrays.sort(kopieMeinesArrays);

int summe = 0
int letzterWert = 0;

Arrays.sort(kopieMeinesArrays);

for (int i = 0; i < kopieMeinesArrays.lenght();i++)
{
  if(letzterWert == kopieMeinesArrays[i])
  {
    //Der Wert ist immer noch der gleiche weil Array sortiert ist.
    summe++; 
  }
  else
  {
    letzterWert = kopieMeinesArrays[i];
    //Bevor Summe auf 0 gesetzt wird musst den Wert natürlich rauswerfen zum übernehmen. Zum Beispiel über eine Methode
    setCountOfArrayValue(summe); //Nur eine Beispielfunktion
    //Summe zurücksetzen, damit nächster Wert gezählt werden kann.
    summe = 0;
  }
}
 
Ich würde das Array mit Arrays.sort sortieren und dann darüber iterieren....dann schauste das nächste an und wenn es auch das selbe ist, zähler hoch...bis man etwas anderes findet...dann rauschreiben oder sonst irgendwie vorhalten.
 
Zuletzt bearbeitet:
mhm...*grüber*
versteh ich nicht - kannst mir diese Variante erklären? danke!

Hi,

ich würde es so machen.

Code:
kopieMeinesArrays = meinArray;
//Die ist STATIC
Arrays.sort(kopieMeinesArrays);

int summe = 0
int letzterWert = 0;

Arrays.sort(kopieMeinesArrays);

for (int i = 0; i < kopieMeinesArrays.lenght();i++)
{
  if(letzterWert == kopieMeinesArrays[i])
  {
    //Der Wert ist immer noch der gleiche weil Array sortiert ist.
    summe++; 
  }
  else
  {
    letzterWert = kopieMeinesArrays[i];
    //Bevor Summe auf 0 gesetzt wird musst den Wert natürlich rauswerfen zum übernehmen. Zum Beispiel über eine Methode
    setCountOfArrayValue(summe); //Nur eine Beispielfunktion
    //Summe zurücksetzen, damit nächster Wert gezählt werden kann.
    summe = 0;
  }
}
 
Zurück