Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
HashMap implementare Java
Last Updated: Mar 17 2018 19:07, Started by
mihaela014
, Mar 14 2018 23:20
·
0
#1
Posted 14 March 2018 - 23:20
Buna seara! Incerc sa inteleg si sa implementez colectiile din java. Am inteles si implementat Stiva, Lista, Cozile, dar m-am impotmolit la HashMap-uri. Am citit teorie si am vazut cateva implementari, insa sunt diferite si nu le inteleg foarte bine. Am inteles ca HashMap-ul implementeaza metodele interfetei Map (am vazut care sunt).
Mi-am facut interfata cu functiile aferente, apoi clasa mea care implementeaza metodele interfetei. Aceasta clasa trebuie sa aiba 2 ArrayList, unu pt chei si unu pt valori ? Am mai vazut o varianta in care myHash(de exemplu) contine doar cheie si valoare( de exemplu int key, String value). Insa nu inteleg cum mi se face mie get-ul si set-ul daca nu am un vector. Ma poate ajuta cineva cu o implementare exacta? (M-am uitat pe stackOverflow) |
#2
Posted 14 March 2018 - 23:33
Hash table, descrisa in mai orice carte de algoritmi/structuri de date.
Edited by dani.user, 14 March 2018 - 23:39. |
#3
Posted 15 March 2018 - 05:23
mihaela014, on 14 martie 2018 - 23:20, said:
Am mai vazut o varianta in care myHash(de exemplu) contine doar cheie si valoare( de exemplu int key, String value). Insa nu inteleg cum mi se face mie get-ul si set-ul Cine stie sa implementeze API-uri echivalente in java cu siguranta nu are nici o problema sa inteleaga codul sursa in java pentru un HashMap, adica intrebarea nu-si are sensul dani.user, on 14 martie 2018 - 23:33, said:
Hash table, descrisa in mai orice carte de algoritmi/structuri de date. hashtable. In in aplicatii multi-threading lucrurile stau invers. In java hashtable-ul nu accepta null-uri si pentru chei si/sau valori , insa hashmap-ul accepta insa o singura valoarea de null in chei si multe valori de null-uri in valori LinkedHashMap extinde HashMap, insa cu diferenta ca LHM-ul pastreaza ordinea de insertie in map, pe cand HashMap-ul nu o face Asta inseamna ca daca la nivel de cod, am nevoie sa trec de la colectie care nu pastreaza ordinea de insertie la o colectie care o face, pur si simplu fac swap de obiect in cod si atat Nu acelasi lucru este valabil daca folosesc un hashtable. Edited by WinstonMontana, 15 March 2018 - 05:13. |
#4
Posted 15 March 2018 - 08:56
dani.user a zis de hash table din cartea de algoritmica, si a zis bine ce a zis.
dar sunt de acord ca @OP cel mai probabil incurca a folosi cu a implementa. |
#5
Posted 15 March 2018 - 13:55
WinstonMontana, on 15 martie 2018 - 05:23, said:
vezi ca faci confuzie intre a implementa si a folosi. A implementa insemana a creea la randul tau un API echivalent, a folosi un API e cu totul altceva. Cine stie sa implementeze API-uri echivalente in java cu siguranta nu are nici o problema sa inteleaga codul sursa in java pentru un HashMap, adica intrebarea nu-si are sensul Vorbim de java, lucrurile stau complet diferit. In java hashtable-lul este sincronizat iar hashmap nu este.Asta inseamna ca in aplicatii singlethread hashmap performeaza mult mai bine decat hashtable. In in aplicatii multi-threading lucrurile stau invers. In java hashtable-ul nu accepta null-uri si pentru chei si/sau valori , insa hashmap-ul accepta insa o singura valoarea de null in chei si multe valori de null-uri in valori LinkedHashMap extinde HashMap, insa cu diferenta ca LHM-ul pastreaza ordinea de insertie in map, pe cand HashMap-ul nu o face Asta inseamna ca daca la nivel de cod, am nevoie sa trec de la colectie care nu pastreaza ordinea de insertie la o colectie care o face, pur si simplu fac swap de obiect in cod si atat Nu acelasi lucru este valabil daca folosesc un hashtable. Vreau sa-mi construiesc eu toate metodele si functiile (implementare), ca sa inteleg cum functioneaza. Dati-mi va rog un link unde sa vad o implementare sau o explicatie. Citesc in "Data Structures and Algorithms in Java, 6 th Edition, 2014". Este ceva, dar nu inteleg eu implementarea. Si da, am folosit "implements" pentru ca Map e interfata, iar clasa mea implementeaza acele metode. am de exemplu // key = int; value = String; public interface Map { int getSize(); boolean isEmpty(); String get(int key); String put(int key, String value); String remove(int key, String value); Iterable keySet(); Iterable values(); Iterable entrySet(); } si mai am public class MyHashMap implements Map{ private ArrayList keys; ???? private ArrayList values; ??? ... } La aceasta parte a doua, am nevoie de ajutor. OriginalCopy, on 15 martie 2018 - 08:56, said:
dani.user a zis de hash table din cartea de algoritmica, si a zis bine ce a zis. dar sunt de acord ca @OP cel mai probabil incurca a folosi cu a implementa. E vorba de a implementa. Sa-mi fac propriile clase, metode, interfete, care sa functioneze ca HashMap-ul . |
#6
Posted 15 March 2018 - 16:17
#7
Posted 15 March 2018 - 16:44
Nu ati inteles ce vrea fata. Ea doreste o replicare a clasei de HashMap exact cum este redactata in java:
http://grepcode.com/...ashMap.<init>() Esta ca si cum tu ai vrea sa inveti C si pt asta trebuie mai inatai sa inveti cum sa proiectezi compilatorul de C (asa gandeste ea) . Mihaela daca vrei sa stii ca in spatele HashMap-ului stau combinatii de algortimi precum Greedy , Divide Et Impera si Programa Dinamica, daca tot vorbim de implementare de colectii. De curiozitate, poti sa pui aici ce ai "implementat" in java pana acum precum : "Stiva", "Lista", "Cozile" ? Eu banuiesc ca de fapt ai replicat doar modul cum sunt concepute si redactate insa nu si functionalitatea din spatele lor. Edited by WinstonMontana, 15 March 2018 - 16:50. |
#8
Posted 15 March 2018 - 22:52
Mai bine invata sa folosesti colectiile din Java, decit sa le implementezi. Macar ajuta la ceva, implementarea unui HashMap mai prost nu ajuta la nimic
Daca cindva o sa ajungi in situatia in care nici o colectie din Java nu se potriveste pentru ceea ce vrei sa faci si nici nu gasesti o alternativa deja implementata, testata si rastestata, atunci poti sa-ti freci creierii creind propriul HashMap "mai bun" |
#9
Posted 17 March 2018 - 19:07
WinstonMontana, on 15 martie 2018 - 16:44, said:
Nu ati inteles ce vrea fata. Ea doreste o replicare a clasei de HashMap exact cum este redactata in java: http://grepcode.com/...ashMap.<init>() Esta ca si cum tu ai vrea sa inveti C si pt asta trebuie mai inatai sa inveti cum sa proiectezi compilatorul de C (asa gandeste ea) . Mihaela daca vrei sa stii ca in spatele HashMap-ului stau combinatii de algortimi precum Greedy , Divide Et Impera si Programa Dinamica, daca tot vorbim de implementare de colectii. De curiozitate, poti sa pui aici ce ai "implementat" in java pana acum precum : "Stiva", "Lista", "Cozile" ? Eu banuiesc ca de fapt ai replicat doar modul cum sunt concepute si redactate insa nu si functionalitatea din spatele lor. Lista Simplu Inlantuita public class Node { private int value; private Node next; public Node(int value) { this.value = value; next = null; } public int getValue() { return value; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public void setValue(int value) { this.value = value; } } public class ListaSimpla { private Node head ; private int size ; public ListaSimpla() { head = null; size = 0; } public boolean isEmpty() { if (size == 0) return true; return false; } public Node getFirst() { return head; } public void show() { Node n = head; if (isEmpty()) System.out.println("Empty list!!"); else { do { System.out.println(n.getValue()); n = n.getNext(); } while (n != null); } } public void addBeforeHead(Node element) { if (head == null) { head = element; size++; } else { element.setNext(head); head = element; size++; } } public void addAfterHead(Node element) { if (head == null) { head = element; size++; } else { element.setNext(head.getNext()); head.setNext(element); size++; } } public void removeFirst() { try { head = head.getNext(); size--; } catch (NullPointerException e) { System.out.println("Lista este goala! Nu puteti sterge!"); } } } |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users