SORU
19 Kasım 2008, ÇARŞAMBA


Kullanmak istiyorsunuz hangi veri yapısı: TreeMap veya HashMap? (Java)

Açıklama |Bir metni okumak için bir Java programı ve kelime metin içinde oluşur kez sayısı ile birlikte alfabetik olarak benzersiz bir deyişle her bir dosya yazdırın.

Program türü Map<String, Integer> kelimeleri saklamak ve geçtiği karşılık gelen frekans değişken bildirmeniz gerekir. Beton türü olan, değil mi? TreeMap<String, Number> HashMap<String, Number> ?

Giriş küçük harfe dönüştürülmüş olmalıdır.

Bu karakterlerden herhangi birini içermeyen bir kelime: \t\t\n]f.,!?:;\"()'

Örnek çıktı |

 Word            Frequency
  a                 1
  and               5
  appearances       1
  as                1
         .
         .
         .

| AçıklamaBen, kod kabaca iki satırlık Perl bu zarif çözümler gördüm. Ancak, Java görmek istiyorum.

Edit: evet, bir uygulama bu yapıların bir (Java) kullanarak. göstermek için yararlı olabilir

CEVAP
19 Kasım 2008, ÇARŞAMBA


TreeMap "alfabetik" gereksinimi. düşünerek beni-sadece çünkü bir görünüyor HashMap sana yineleme zaman hiç sipariş veren oldu; TreeMap doğal anahtarı sırayla dolaşır.

EDİT: Konrad yorum "HashMap kullanımı, sıralama sonra." telkin edilmiş olabilir bence Bu N yineleme başlangıçta zorundayız rağmen, K < zorundayız, çünkü iyidir;= sonuna çiftleri nedeniyle N tuşları. De gittiğimiz gibi sıralanmış tutmak küçük-ama-olmayan-sabit hedef daha az anahtarları varken sonuna kadar pahalı bit (sıralama) kurtarırlar.

Çünkü . şu an için benim cevap kalıyorum şunları söyledi: ^em>basitbu hedefe ulaşmanın yolu. Gerçekten OP performans konusunda özellikle endişeli olduğunu bilmiyoruz, ama soru zerafet ve kısalık konusunda endişeli olduğunu ima ediyor. Bir TreeMap kullanarak hangi hitap ediyor bu çok kısa, benim için yapar. Eğer performans gerçekten bir sorun varsa, ya TreeMap veya HashMap:) daha saldırmak için daha iyi bir yol olabileceğini düşünüyorum

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cosmicrocketman

    cosmicrocket

    17 NİSAN 2006
  • lilstevie89

    lilstevie89

    25 Mart 2011
  • TouchePro

    TouchePro

    27 EYLÜL 2007