Mam tablicę łańcuchów:Najbardziej efektywny sposób zamówić tablicę łańcuchów poprzez częstotliwość
String[] stringArray = {"x", "y", "z", "x", "x", "y", "a"};
Co jest najszybszym/najbardziej skuteczny sposób, aby zamówić ten w mniejszym Collection
w kolejności jak częste każdego String
jest z częstotliwością?
I choć o użyciu String
jako klucz w HashMap<String,Integer>
ale to nie byłby być klasyfikowane pod względem częstotliwości
Mój inny sposób i uważane jest za pomocą TreeMap<Integer, String[]>
z listy ciągów z tej liczby całkowitej, ale wydaje wiele kontroli dotyczy ..
Próbuję uniknąć użycia więcej niż jednej pętli Jeśli to możliwe, moje tablice String
będą znacznie większe niż te powyżej. Dzięki!
EDIT Co chcę tylko, aby móc wysyłać Ciągi w kolejności częstotliwości, a korzystnie móc sparować ten ciąg z częstotliwością w tablicy, więc na przykład dwóch tablic wyjściowych:
["x", "y", "z", "a"]
[3,2,1,1]
byłoby to dość prosty problem, jeśli prędkość nie było problemem, dlatego pytam wielkie umysły tutaj :)
Możesz użyć 'HashMap'. Zachowaj każdy ciąg jako klucz i dodaj "1" do wartości za każdym razem, gdy otrzymasz klucz. Tworzenie kolekcji wyników to nic innego jak składanie zamówień według wartości i dodawanie kluczowych wartości razy (Jeśli klucz 'x' ma wartość' 5', wydrukuj 'x' 5 razy). –
Pierwsza odpowiedź w tym pytaniu powinna dać ci wyobrażenie o tym, jak można to zrobić: http: //stackoverflow.com/questions/6712587/counting- frequency-of-characters-in-a-string – Paddyd