28. april 2002 - 13:46Der er
11 kommentarer og 1 løsning
hashmap spørgsmål
Kan man formå en hashmap til at indeholde (referencer) til objekter i values delen ?
Mine objekter er at typen:
class SumClass { long kId = 0; String kKode =""; String iNavn =""; String kKonto =""; double sumK = 0; } og jeg vil gerne have en hashmap fyldt med sådanne elementer.
key kan være stringværdien af en tæller, og values skal gerne være en 'reference'.
Hvordan gør man det, og hvordan hhv put'er og get'er jeg f.eks værdien
mySumClass.sumK, når mySumClass er en instans af SumClass ??
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Person person1 = new Person("Bo",25); Person person2 = new Person("Hans",18); Person person3 = new Person("Maria",29); Person person4 = new Person("Line",15);
Har jeg forstået dig rigtigt: du laver een HashTable, hvori du kommer Person-objekter, og et Person-objekt er et array ?
Problemet er, at jeg ikke ved, hvormange Person-objekter jeg skal lave, og at instantieringen af Person-objekter skal ske dynamisk. Dermed kan jeg ikke finde ud af at give den navne, der kan bruges som key i HashTable'en...
Så istedet for brugere.put(person2.navn,person2);
så det være med værdier i stil med brugere.put(<kode der returnerer "person2.navn">,<kode der returnerer "person2">);
Person-objekt er ikke et array bare en objekt jeg skaber via classen Person ja du kan sagtens proppe lige så mange objekter i hash tabellen som du har lyst til et eksempel:
void opretBruger(String bruger,String pass) {
Person nyBruger = new Person(bruger,pass); if(!brugere.contains(nyBruger))
... ja, jeg bøvler stadigvæk... nu ser det således ud, og det kan ikke kompilere .... pga linien Person nyPerson = new Person(index, navn); hvorimod Person nyPerson = new Person(navn, navn); GODT kan kompilere...
Jeg vil gerne have, at enten key er et forløbende nummer, da jeg ikke kender navnet, når jeg skal slå op i HashTabellen...
public void opretBruger(String navn,int index) { Person nyPerson = new Person(navn, index); if(!brugere.contains(nyPerson)) brugere.put(index, nyLinie); }
Fejlen er: proj/Brugere.java [63:1] cannot resolve symbol symbol : method put (int,java.lang.String) location: class java.util.HashMap summeretKy.put(index ,nyLinie.toString() ); ^ 1 error Errors compiling Brugere [Local].
Og den barberede kode ser således ud **************** /* * Main.java * * Created on 28. april 2002, 19:39 */
package proj;
import java.util.*;
public class Brugere { public HashMap summeretKy = new HashMap(); int sumKyTaeller = 0;
/** Creates new Brugere */ public Brugere () { // her skal egentlig være en løkke, hvor man traver gennem en kollektion DataSet ko =new DataSet(); sumKyTaeller += 1; opretKyLinie(ko.konto,ko.rKonto,ko.kKode, ko.kPris,sumKyTaeller ); }
public static void main (String args[]) { new Brugere(); }
class DataSet { public String konto; public String rKonto; public String kKode; public String kEmne; public String kInst; public double kPris=0; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.