2012-05-03 20 views
5

Java'da, Liste ve Harita koleksiyonlarda kullanıyor. Fakat hangi durumlarda Listeyi kullanmalı ve Harita'yı hangi zaman kullanacağımızı anlayamadım. İkisi arasındaki en büyük fark nedir?Haritadan liste nasıl farklıdır?

+0

Way: düğümlerin listesi sabit zamanda (O (1)) getirilebilir. bir skeet cevap almak için! – chiliNUT

cevap

11

Şimdi Java collections tutorial okumak için iyi bir zaman olacağını - ama temelde, bir liste dizine erişebileceğiniz unsurların düzenli dizisidir ve bir harita değerlerine anahtarlardan bir genellikle sırasız eşleştirme yapılır. (Bazı haritalar ekleme sırasını korur, ancak bu uygulamaya özgüdür.)

Bir anahtar/değer eşlemesi ve yalnızca bir öğe koleksiyonu istediğinizde, genellikle oldukça açıktır. Anahtar, numaralı anahtarının değeri ise daha az anlaşılır, ancak bir öğeye verimli bir şekilde erişmek istediğinizde. bazı duyularında bile ayrı bir anahtar koleksiyonunuz olmasa bile, bir harita için hala iyi bir kullanım durumudur.

Ayrıca öğesinin öğesinden oluşan bir (genellikle sırasız) koleksiyonu olan Set vardır. Öğrenci rulo numaralarını isimlerine eşlemek istiyorsanız, örneğin Key:Value çift tür veri için

4

Map.

List, kopyaların çoğaltılmasına izin veren basit sipariş toplama araçları içindir. Örneğin, öğrenci adlarının listesini göstermek için .

0

List yalnızca bir koleksiyon topluluğudur (sıra). Bu list documentation'u kontrol edin. Öğelere tamsayı dizinine (listedeki konum) erişebilir ve listedeki öğeleri arayabilirsiniz. Ayrıca listeler, yinelenen öğelere ve birden çok NULL öğesine izin verir.

Map Değerleri anahtarlarla eşleyen bir nesnedir. Bu map documentation kontrol edin. Bir harita çift anahtar içermez; Her tuş en fazla bir değerle eşlenebilir.

1

Harita Arabirimi A Harita benzersiz tanımlayıcılarla ilgilenir. Eşsiz bir anahtarı (ID), hem anahtar hem de değer, elbette nesneler olan belirli bir değerine eşlersiniz. Harita uygulamaları, tuşa dayalı olarak değerini aramak, sadece değerlerin bir koleksiyonunu istemek veya yalnızca anahtarların bir koleksiyonunu istemek gibi şeyler yapmanıza izin verir. Ayarlar gibi Haritalar, iki anahtarın aynı mı yoksa farklı mı olduğunu belirlemek için equals() yöntemine güvenir.

Liste Arabirimi A Liste dizinle ilgileniyor. Listede listelenmemiş olan tek şey numarasına sahip değildir, endeksle ilgili bir dizi yöntemdir. Bu anahtar yöntemler, get (int dizini), indexOf (Object o), add (int indeks, Object obj) ve gibi öğeleri içerir. Üç Liste uygulamasının tümü, dizin konumuna göre sıralanır; bu, öğesinin, belirli bir dizindeki bir nesneyi ayarlayarak veya belirtme konumu olmadan ekleyerek belirlediğiniz bir konumdur, bu durumda nesne sonuna eklenir.

1

listesi, her nesnenin işaretçiler aracılığıyla bir sonraki öğeye bağlandığı bağlantılı bir listedir. Listeye yeni bir nesne eklemek için gereken süre O (1) 'dir, fakat üzerindeki diğer işlemler daha uzun sürer.

Bu konuda iyi bir şey, ihtiyacınız olan bellek miktarını tam olarak alması ve hatta ondan daha fazla bayt içermemesidir.

Haritalar, bir diziye sahip olan ve diziye her bir girişin, konuma göre anahtarı hesaplayan hashFunction(key) ile hesaplanan bir veri yapısıdır. Bir Haritadaki hemen hemen her işlem, O (1) (2 eşdeğer anahtar olduğunda ekleme hariç) ancak uzay karmaşıklığı oldukça büyüktür. daha fazla okuma deneyin Wikipedia'nın HashMap ve linked list

+0

HashMap ve LinkedList, Harita ve Liste arayüzünün uygulamalarıdır, bunlar yalnızca bu koleksiyonların belirli bir örneğidir. –

+0

@GuillaumePolet, siz haklısınız, ama fikir önemli olan şeydir. MAP ve LİSTE arasındaki farkın anlaşılmasının temeli, hashmap ve linklist arasındaki farkı anlamaktır. – thepoosh

1

HashList için

karma bir tabloda nesneleri depolamak bir veri yapısıdır ve list.it bir HashMap kombinasyonu ve çift bağlı listesidir. Acess daha hızlı olacak. HashMap, harita arayüzünün karma tablosu uygulamasıdır ve senkronize olmadığından ve boş değerlere izin vermeden HashTable ile aynıdır. Liste, sipariş edilen bir koleksiyondur ve boş değerlere ve kopyalara izin verir. konumsal erişim mümkündür. Küme, kopyalara izin vermeyen bir koleksiyondur, en fazla bir null öğeye izin verebilir. matematiksel setimizle aynı.

0
List - This datastructure is used to contain list of elements. 
     In case you need list of elements and the list may contain duplicate values, 
     then you have to use List. 

Map - It contains data as key value pair. When you have to store data 
     in key value pair,so that latter you can retrieve data using the key, 
     you have to use Map data structure. 

Liste uygulaması - ArrayList LinkedList
Harita uygulaması - tüm almak istiyorsanız bir karma haritası hızlı veri yapısıdır - HashMap, TreeMap ArrayList kıyasla HashMap yılında

bir sayfa için düğümler. Zaman listesi O (n) (n = sayfa sayısı, sıralı listelerde daha hızlı, ancak O (1) 'e yaklaşma)

İlgili konular