23. maj 2001 - 18:27Der er
5 kommentarer og 1 løsning
GarbageCollection
Vi har et begrebshierarki med node-objekter. Hvert node-objekt består af en tekststreng(der er begrebet), en parent ArrayList og en child ArrayList. ArrayListerne indeholder referencer til relaterede noder/begreber. Vi kan slette og indføre nye noder, dog kan der ikke indføres en node hvis den allerede findes. Hvis vi så indfører en ny node/begreb og herefter sletter det, kan vi ikke oprette den samme node/begreb igen, forbi systemet melder at noden/begrebet allerede eksisterer. Lyder det ikke som et problem med Garbage Collection ? Og hvordan løser vi det rent logisk ?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Referencer til garbage eligable objekter kan ikke genskabes (Ihvertfald sådan umiddelbart), så det kan ikke lade sig gøre at det er problemer med Garbage Collection.
Det er jeres kode, som ikke vil oprette fordi i formodentlig ikke har fået fjernet det gamle helt.
Vis noget kode omkring opret og slet, så kan det være vi kan se det.
//Henter \"den slettedes\" forældre for (int i = 0; i < slettesForaeldre.size(); i++){
Node m = (Node) slettesForaeldre.get(i);
//I disse forældres alBoern-array tilføjes alle \"den slettedes\" børn for (int j = 0; j < slettesBoern.size(); j++){ m.alBoern.add(slettesBoern.get(j)); }
//Forælderens reference til det \"gamle barn/de gamle børn\" // findes og slettes
// Hvis denne forælder har børn ledes der. if (!m.alBoern.isEmpty()) {
// Forælderens arraylist med børn ledes igennem for (int i2 = 0; i2 < m.alBoern.size(); i2++) {
//Først oprettes midlertidig Node n med et barn fra arraylisten Node m2 = (Node) m.alBoern.get(i2);
// Hvis børnenodens emneord passer overens med n2\'s emneord // fjernes referencen og noden erstattes med den reviderede if (m2.emneOrd.equalsIgnoreCase(nodeDerSkalSlettes.emneOrd)) {
m.alBoern.remove(i2); i2--; } } } }
//Henter \"den slettedes\" børn for (int k = 0; k < slettesBoern.size(); k++){
//Først oprettes midlertidig Node n med et barn af \"den slettede\" Node n = (Node) slettesBoern.get(k);
//I disse børns alForaeldre-array tilføjes alle \"den slettedes\" forældre for (int l = 0; l < slettesForaeldre.size(); l++){ n.alForaeldre.add(slettesForaeldre.get(l)); }
//Børnenes reference til den \"gamle forælder/de gamle forældre\" //findes og slettes
// Hvis det barn vi kigger på har forældre ledes det igennem for \"den slettede\" if (!n.alForaeldre.isEmpty()) {
// Barnets arraylist med forældre ledes igennem for (int i2 = 0; i2 < n.alForaeldre.size(); i2++) {
//Først oprettes midlertidig Node n med den første forælder Node n2 = (Node) n.alForaeldre.get(i2);
if (n2.emneOrd.equalsIgnoreCase(nodeDerSkalSlettes.emneOrd)) { n.alForaeldre.remove(i2); i2--; } } } } System.out.println(\"Begrebet: \" + nodeDerSkalSlettes + \" er nu slettet.\"); System.out.println(\"\\nTryk \'enter\' for at komme tilbage.\");
//Venter på indtastning fra bruger String tilbage = Tastatur.readString();
//Returnerer hvis brugeren trykker en tast if(tilbage.equalsIgnoreCase(\"\")||!tilbage.equalsIgnoreCase(\"\")) SamletMenuer.administratorMenu(); Start.administrator(); }
//Henter \"den slettedes\" forældre for (int i = 0; i < slettesForaeldre.size(); i++){ Node m = (Node) slettesForaeldre.get(i); //I disse forældres alBoern-array tilføjes alle \"den slettedes\" børn for (int j = 0; j < slettesBoern.size(); j++){ m.alBoern.add(slettesBoern.get(j)); }
Hertil kan jeg følge med, så knækker filmen...
Lad mig skrive forfra fra forløkken: //Henter \"den slettedes\" forældre for (int i = 0; i < slettesForaeldre.size(); i++){ Node parent = (Node) slettesForaeldre.get(i); //I disse forældres alBoern-array tilføjes alle børn for (int j = 0; j < slettesBoern.size(); j++){ Node child = slettesBoern.get(j); parent.alBoern.add(child); // Add child to parent child.alForaeldre.add(parent); // add parent to child parent.alBoern.remove(nodeDerSkalSlettes); // remove me from parent child.alForaeldre.remove(nodeDerSkalSlettes); // remove me from child } }
Og så skulle det ligesom være det. Alt det andet kan jeg ikke lige se logikken i.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.