bis Generics implementiert

master
ifembanefo 2023-04-25 09:21:15 +02:00
parent c396a70a4f
commit b70d5be949
3 changed files with 87 additions and 42 deletions

View File

@ -0,0 +1,9 @@
package Exception;
public class Indexexception extends Exception {
public Indexexception() {
super("Nicht erlaubter Index wird abgefragt! Außerhalb des Wertebereiches");
}
}

View File

@ -0,0 +1,36 @@
package Generics;
import java.util.ArrayList;
public class Verwaltung<T> {
ArrayList<T> datenstruktur;
public void einfuegen(T datei) {
boolean add =datenstruktur.add(datei);
if (add) {
System.out.println(datei + "in die Liste hinzugefügt");
} else {
System.out.println(datei + "konnte nicht hinzugefügt werden");
}
}
public T suchen(T datei) {
int index = datenstruktur.indexOf(datei);
if (index != -1) {
System.out.println(datei + "wurde an Position" + index + "gefunden");
} else {
System.out.println(datei + "wurde nicht gefunden");
}
return datei;
}
public void loeschen(T datei) {
boolean removed = datenstruktur.remove(datei);
if (removed) {
System.out.println(datei + "wurde aus der Liste entfernt");
} else {
System.out.println(datei + "wurde nicht gefunden");
}
}
}

View File

@ -1,6 +1,9 @@
package indexverwaltung; package indexverwaltung;
import java.util.*; import java.util.*;
import Exception.Indexexception;
import java.io.*; import java.io.*;
public class Index { public class Index {
@ -9,88 +12,85 @@ public class Index {
private String dateiname = "Indexdatei.txt"; private String dateiname = "Indexdatei.txt";
private int indextabelle[]; // 0 .. MAX-1 private int indextabelle[]; // 0 .. MAX-1
private RandomAccessFile eineIndexDatei; private RandomAccessFile eineIndexDatei;
// Konstruktor // Konstruktor
public Index() public Index() {
{
indextabelle = new int[MAX]; indextabelle = new int[MAX];
// Initialisierung der indextabelle // Initialisierung der indextabelle
for(int i = 0; i < MAX; i++) indextabelle[i] = -1; for (int i = 0; i < MAX; i++)
indextabelle[i] = -1;
// Kein Datensatz zu Schluessel vorhanden // Kein Datensatz zu Schluessel vorhanden
} }
// Methoden // Methoden
public void erzeugeEintrag(int schluessel, int index) throws IOException public void erzeugeEintrag(int schluessel, int index) throws IOException, Indexexception {
{ if (index < 0 || index > MAX) {
/** Speichert zu einen Schluessel den zugehoerigen throw new Indexexception();
* Datensatz-Index in der indextabelle }
/**
* Speichert zu einen Schluessel den zugehoerigen Datensatz-Index in der
* indextabelle
*/ */
if(schluessel < MAX) if (schluessel < MAX)
indextabelle[schluessel] = index; indextabelle[schluessel] = index;
// Aktualisieren der Indexdatei, // Aktualisieren der Indexdatei,
// d. h. Abspeichern der Datei // d. h. Abspeichern der Datei
aktualisiereIndexDatei(schluessel); aktualisiereIndexDatei(schluessel);
} }
public int gibIndexZuSchluessel(int schluessel) public int gibIndexZuSchluessel(int schluessel) {
{
// Gibt zu dem Schluessel den gefundenen // Gibt zu dem Schluessel den gefundenen
// Datensatz-Index zurueck // Datensatz-Index zurueck
if(schluessel < MAX) if (schluessel < MAX)
return indextabelle[schluessel]; return indextabelle[schluessel];
// oder -1, wenn Schluessel zu gross ist // oder -1, wenn Schluessel zu gross ist
else else
return -1; return -1;
} }
public void ladeIndexDatei() throws IOException public void ladeIndexDatei() throws IOException {
{ /**
/** Liest die Indextabelle vollstaendig aus einer Datei * Liest die Indextabelle vollstaendig aus einer Datei Dies geschieht nur beim
* Dies geschieht nur beim Start des Programms * Start des Programms
*/ */
eineIndexDatei = new RandomAccessFile(dateiname, "r"); eineIndexDatei = new RandomAccessFile(dateiname, "r");
int index; int index;
for(int schluessel = 0; schluessel < MAX; schluessel++) for (int schluessel = 0; schluessel < MAX; schluessel++) {
{
index = eineIndexDatei.readInt(); index = eineIndexDatei.readInt();
indextabelle[schluessel] = index; indextabelle[schluessel] = index;
} }
eineIndexDatei.close(); eineIndexDatei.close();
} }
public void speichereIndexDatei() throws IOException public void speichereIndexDatei() throws IOException {
{ /**
/** Speichert die Indextabelle vollstaendig in einer Datei * Speichert die Indextabelle vollstaendig in einer Datei Dies geschlieht beim
* Dies geschlieht beim beenden des Programs * beenden des Programs
*/ */
eineIndexDatei = new RandomAccessFile(dateiname, "rw"); eineIndexDatei = new RandomAccessFile(dateiname, "rw");
for(int schluessel = 0; schluessel < MAX; schluessel++) for (int schluessel = 0; schluessel < MAX; schluessel++)
eineIndexDatei.writeInt(indextabelle[schluessel]); eineIndexDatei.writeInt(indextabelle[schluessel]);
eineIndexDatei.close(); eineIndexDatei.close();
} }
private void aktualisiereIndexDatei(int schluessel) throws IOException private void aktualisiereIndexDatei(int schluessel) throws IOException {
{ /**
/** Aktualisiert die indextabelle in der Indexdatei * Aktualisiert die indextabelle in der Indexdatei Dies geschliet beim
* Dies geschliet beim Hinzufuegen eines neuen * Hinzufuegen eines neuen Indexes oder Aendern eines alten Indexes
* Indexes oder Aendern eines alten Indexes
*/ */
eineIndexDatei = new RandomAccessFile(dateiname, "rw"); eineIndexDatei = new RandomAccessFile(dateiname, "rw");
// eine int-Zahl belegt 4 Bytes // eine int-Zahl belegt 4 Bytes
eineIndexDatei.seek((long)(schluessel * 4)); eineIndexDatei.seek((long) (schluessel * 4));
eineIndexDatei.writeInt(indextabelle[schluessel]); eineIndexDatei.writeInt(indextabelle[schluessel]);
eineIndexDatei.close(); eineIndexDatei.close();
} }
// Zum Testen // Zum Testen
public void gibIndextabelleAus() public void gibIndextabelleAus() {
{
int schluessel = 0; int schluessel = 0;
for(int element : indextabelle) for (int element : indextabelle) {
{
System.out.println(schluessel + " " + element); System.out.println(schluessel + " " + element);
schluessel++; schluessel++;
} }
} }
} }