Just nu i M3-nätverket
Gå till innehåll

egen klass i hashmap


Yoshi

Rekommendera Poster

Hej

har skrivit en klass som innehåller diverse int värden som jag nu vill lägga i en hashmap. hur funkar detta. när jag skapar hashmapen med kommandot new HashMap(), hur skriver jag då för att få den att använda min egna skrivna klass som en variabel?? har det ngt med ojbect att göra och i så fall hur?

exempel och hänsvisning till doc uppskattas

mvh

Yoshi

 

Länk till kommentar
Dela på andra webbplatser

-Patrik Johansson-

Hej.

Har du ett objekt och en nyckel(värde) till objektet kan du spara det i Hashmappen:

hasmapnamn.put(nyckelvärdesobjekt, objekt).

eller om man har ett objekt som kallas person som innehåller personuppgifter och tex metodne hämta personnummer som skickar tillbaka ett intvärde.

int persNummer = personObjekt.getPerNr();
Integer persNummerObjekt = new Integer(persNummer);
hashMapNamn.put(persNummerObjekt, personObjekt);

.

 

Här skapade jag en nyckel(objekt) av en primtiv variabel genom att använda wrapperklassen Integer som gör om det primitiva värdet till ett objekt.

Integer: http://java.sun.com/j2se/1.4.1/docs/api/java/lang/Integer.html

Hashmap:

http://java.sun.com/j2se/1.4.1/docs/api/java/util/HashMap.html

 

/Neox -(Patrik J)

"Gravitation can not be held responsible for people falling in love"
- citat av Albert Einstein

 

Länk till kommentar
Dela på andra webbplatser

Tack för svaret.

Lite förtydligande, jag har en klass typ

public class myData

{

int tal1;

int tal2;

int tal3;

}

 

som jag vill spara med datum som nyckel i en hashmap. Dvs till ett visst datum vill jag knyta tre heltal, går det att göra utan att skriva en klass är jag bara glad men fick svaret via detta forum att användandet av en klass vore bäst, hur man gör med exempel och hänvisning till doc tas emot med tacksamhet

mvh

Yoshi

 

 

Länk till kommentar
Dela på andra webbplatser

-Patrik Johansson-

Okej. Det kan vara bra att lagra nyckeln(datumet) i klassen också, det kan vara användbart vid vissa sorteringar mm.

Vilken typ av datum; ex sträng eller GregorianCalender eller vad du nu har tänkt dig får vara nyckeln. Kom ihåg att det måste vara ett objekt. Så har du datumet som en integer får du antingen lägga den i en sträng eller i en Integer(wrapperklass) eller något annat.

 

I detta exempel används en sträng som datumobjekt.

 

Så om du har dessa fält(variabler) i din klass(MyData);

int tal1;

int tal2;

int tal3;

String datum;

Och metoder för att retunera talen och datumet.

 

Nu kan du skapa en HashMap ovh använda put för att lägga dit nya objekt med nycklar:

HashMap m = new HashMap();
int datum = 20030314;
m.put(String.valueOf(datum), new MyData(1,2,3,String.valueOf(datum)));

Här omvandlas datumet till ett strängobjekt och agerar nyckel. Sedan skapas ett nytt MyDataobjekt där tre olika heltal plus datumet i strängformat skickas med till kontruktorn av Mydata där variablerna tilldelas dessa världen.

Det blev lite rörigt nu, hoppas du fattar ändå...

 

För att hämta ett objekt från hashmappen gör du så här:

MyData ettMyDataObjekt = (MyData) m.get(strängDatum);

Sedan kan du anropa den/de metoder som finns för att retunera talen.

 

/Neox -(Patrik J)

"Gravitation can not be held responsible for people falling in love"
- citat av Albert Einstein

 

[inlägget ändrat 2003-04-14 18:25:40 av Patrik J Johansson]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...