🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
3 messages
3 total messages Started by Showstoppa Wed, 07 Apr 2004 19:01
hashtable - arraylist
#860
Author: Showstoppa
Date: Wed, 07 Apr 2004 19:01
8 lines
1005 bytes
witam
chcialbym sie dowiedziec jakie sa roznice miedzy hashtable a arraylist ? 
jakies sa zalety i wady obu tablic ?

chcialbym odpalic w aplikacji kilka watkow i miec jakos dostep do nich
przez umieszczenie ich w tablicy.

dzieki za porady
Re: hashtable - arraylist
#861
Author: Marek Janaszewski USUNTO. z adre...
Date: Wed, 07 Apr 2004 19:58
49 lines
3509 bytes
Showstoppa wrote:
> witam
> chcialbym sie dowiedziec jakie sa roznice miedzy hashtable a
> arraylist ? jakies sa zalety i wady obu tablic ?
>
> chcialbym odpalic w aplikacji kilka watkow i miec jakos dostep do nich
> przez umieszczenie ich w tablicy.
[...]

Witam!

Haszowanie, hashing, inaczej algorytmy mieszające to właściwie cała
metodologia tworzenia algorytmów do efektywnego wyszukiwania. W ArrayList
jest stosowany z algorytm liniowy, brutalny, wyczerpujący, czy jak go zwać,
aby znaleźć odpowiedni element. W najgorszym wypadku trzeba przeszukać całą
tablice aby dowiedzieć się, że elementu w tablicy nie ma. Czyli po prostu
pętla po wszystkich elementach. Inne algorytmy to wyszukiwanie połówkowe
(binarne) albo drzewa. Te algorytmy opierają się na tym, że dane są
posortowane albo  są organizowane w drzewa w odpowiedniej kolejności.
Np. o specjalne drzewa oparte są indeksy w bazach danych, B-Tree. W bazach
danych ważne są także aspekty dyskowe stosowanych algorytmów, ponieważ ruch
głowicy dysku długo trwa. O ile mi wiadomo sterta (heap) czyli pamięć
dynamiczna to także drzewo binarne pełne. Czyli dwa elementy w każdym węźle.
A są także algorytmy mieszające. Algorytmy mieszające za pomocą specjalnej
funkcji zgadują położenie elementu. Oczywiście podobna funkcja służy do
umieszczenia elementu. Jest to metoda zamiany danych na adres w strukturze.
Najbardziej brutalny sposobem było by odwzorowanie bezpośrednie (jeśli
dobrze pamiętam nazwę). Czyli np. każdy układ liter w nazwisku, składającym
się np. z 20 znaków, ma obliczony inny adres. Oczywiście wtedy taka
struktura była by ogromna, a osób o nazwiskach Aaaaaa raczej jest mało.
Dlatego zwykle pod danym adresem znajduje się wiele elementów.
Czasem ludzie stosują algorytmy haszujące, np. kiedy szukamy hasła w
encyklopedii wiemy mniej-więcej gdzie położyć polec na podstawie położenia
litery w alfabecie. Z algorytmów haszujacy korzystają także bazy danych. O
ile wiem haszowanie ma jakieś zastosowanie także w kryptografii. Chyba
funkcje skrótu czy inne sumy kontrolne także mają z tym coś wspólnego.

Generalnie stosują algorytmy przyspieszające wyszukiwanie wydłużamy
aktualizacje danych i często używamy dodatkowej pamięci do przechowywania
np. indeksów.

Tyle co zapamiętałem z książki o algorytmach i strukturach danych. Zwykle i
tak stosuje się proste pętle bo tablice są małe, a dużą ilość danych
przerzuca się na bazy danych.

-- 
Pozdrawiam,
Marek Janaszewski
[ j_m...@gazeta.pl ]
Re: hashtable - arraylist
#862
Author: sikor
Date: Thu, 08 Apr 2004 07:46
9 lines
1379 bytes
> witam
> chcialbym sie dowiedziec jakie sa roznice miedzy hashtable a arraylist ?
> jakies sa zalety i wady obu tablic ?
>
> chcialbym odpalic w aplikacji kilka watkow i miec jakos dostep do nich
> przez umieszczenie ich w tablicy.
Wszystko zalezy ile tych watkow bedziesz odpalal, przy niewielu watkach
uzycie tablic haszujacych wydaje sie rozwiazaniem stawiajacym duzy narzut
obliczeniowy.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads