Vererbung mit Arraylist

sh33p

Bekanntes Mitglied
Java:
public abstract class Konto {

String kontobezeichnung;
int kontostand;

public Konto(String kontobezeichnung, int kontostand){
this.kontobezeichnung = kontobezeichnung;
this.kontostand = kontostand;

}
abstract String getKontobezeichnung();

abstract int getKontostand();
}
public class Girokonto extends Konto{

int dispokredit;

public Girokonto(String kontobezeichnung, int kontostand, int dispokredit){
  super(kontobezeichnung,kontostand);
  this.dispokredit = dispokredit;
}
public int getKontostand(){
  return kontostand;
}
public String getKontobezeichnung(){
  return kontobezeichnung;
}


}
import java.util.*;
public class GiroKontoSortierer implements Comparator<Girokonto> {

public int compare(Girokonto g1, Girokonto g2){

if(g1.getKontostand() == g2.getKontostand()){
  return 0;
}

if(g1.getKontostand() > g2.getKontostand()){
return 1;
}

if(g1.getKontostand() < g2.getKontostand()){
  return -1;
}

return (g1.getKontostand()+ g2.getKontostand());
}
}
import java.util.*;
public class Kontoverwaltung {

  ArrayList<Girokonto> a;
  
  public Kontoverwaltung(){
    a = new ArrayList<Girokonto>();
  }
    public static void main(String[] args) {
    new Kontoverwaltung().test();
    }
          public void test(){
           a.add(new Girokonto("Sparkassenkonto deluxe",2000,2000));
           a.add(new Girokonto("Dresdener Bank small", 5000,10000));
           a.add(new Girokonto("Volksbank middle", 2000,4000));
           ausgabe();
          }
          
          public void ausgabe(){
          Iterator it = a.iterator();
            while(it.hasNext()){
           System.out.println(it.next());
           Collections.sort(a,new GiroKontoSortierer());
           
  }

}
          
}

im endeffekt hab ich 2 fragen:

1.wie veränder ich die methode ausgabe(),damit mir der inhalt des girokonto-objektes richtig angezeigt wird?

2. kann eine generische liste nicht mehr als 1 Argument aufnehmen? z.b wenn ein eine Klasse Kunde geben würde:
Java:
ArrayList<Girokonto,Kunde> a;

?
 
Zuletzt bearbeitet:

Der Müde Joe

Top Contributor
>kann eine generische liste nicht mehr als 1 Argument aufnehmen? z.b wenn ein eine Klasse Kunde geben würde:

Nein. Es ist eine List von ??. Nicht eine Liste von ?? und @@.

>wie veränder ich die methode ausgabe(),

Überschreib die toString Methode.

Die ganze Ausgabe Methode ist eh ein wenig wirr. Über einen Iterator gehen und dann sortieren?
Wohl eher umgekehrt. Erst sortieren, dann darüber itereiren. Am besten mit for(Girokonto konto : a) {...}
 

Der Müde Joe

Top Contributor
try it:

Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public interface Account {

	int getBalance();
}

class DepositAccount implements Account, Comparable<DepositAccount> {

	private int money;

	public DepositAccount(int money) {
		this.money = money;
	}

	@Override
	public int getBalance() {
		return this.money;
	}

	@Override
	public String toString() {
		return "Deposit: " + money;
	}

	@Override
	public int compareTo(DepositAccount o) {
		return (o.money < money) ? 1 : (o.money > money) ? -1 : 0;
	}
}

class BankJob {

	private List<DepositAccount> accounts = new ArrayList<DepositAccount>();

	public BankJob() {
		init();
	}

	private void init() {
		accounts.add(new DepositAccount(100));
		accounts.add(new DepositAccount(300));
		accounts.add(new DepositAccount(200));
	}

	public void print() {
		Collections.sort(accounts);
		for (Account a : accounts) {
			System.out.println(a);
		}
	}

	public static void main(String... _) {
		BankJob bank = new BankJob();
		bank.print();
	}
}
 

sh33p

Bekanntes Mitglied
Java:
import java.util.*;
public class Kontoverwaltung {

  ArrayList<Girokonto> list;
  
  public Kontoverwaltung(){
    list = new ArrayList<Girokonto>();
  }
    public static void main(String[] args) {
    new Kontoverwaltung().test();

    }
          public void test(){
           list.add(new Girokonto("Sparkassenkonto deluxe",2000,2000));
           list.add(new Girokonto("Dresdener Bank small", 5000,10000));
           list.add(new Girokonto("Volksbank middle", 2000,4000));
          Collections.sort(list, new GiroKontoSortierer());
            print(list);
          }
          
          public static void print(List <Girokonto> konten){
          for( Girokonto g : konten)
          System.out.println( g.getKontostand()+g.getKontobezeichnung()+g.getDispoKredit());
           
  }


}

ohne toString() zu überschreiben.
btw.kannst du mir mal zeigen, wie ich den Iterator mit der toString methode schreibe?
 
Zuletzt bearbeitet:

Der Müde Joe

Top Contributor
>ohne toString() zu überschreiben.

Dafür musst du jetzt jedes Mal wenn du ein String vom Konto brauchst den ganzen Schnoder machen anstatt einfach konto.toString() ;-)

EDIT:
>btw.kannst du mir mal zeigen, wie ich den Iterator mit der toString methode schreibe?

siehe Code oben.
Einfach toString überschreiben im Konto. Der Rest erledigt system.out.println
mit Iterator genau gleich
Iterator<Konto> it = accounts.iterator()
wihle(it.hasNext()) { System.out.println(it.next())}

syso ruft automatisch toString auf
 

sh33p

Bekanntes Mitglied
ok to String hab ich in girokonto überschrieben.

nur bei dem iterator hagelt es massen an compiler fehlern:

Java:
Iterator<Girokonto> it = list.iterator();
   while(it.hasNext()) {
   System.out.println(it.next());

   }
 

sh33p

Bekanntes Mitglied
Java:
import java.util.*;
public class Kontoverwaltung {

  ArrayList<Girokonto> list;
  
  public Kontoverwaltung(){
    list = new ArrayList<Girokonto>();
  }
    public static void main(String[] args) {
    new Kontoverwaltung().test();

    }
          public void test(){
           list.add(new Girokonto("Sparkassenkonto deluxe",2000,2000));
           list.add(new Girokonto("Dresdener Bank small", 5000,10000));
           list.add(new Girokonto("Volksbank middle", 2000,4000));
           Collections.sort(list, new GiroKontoSortierer());
            print(list);
          }
          
          public static void print(List <Girokonto> konten){
          for( Girokonto g : konten)
          System.out.println( g.getKontostand()+g.getKontobezeichnung()+g.getDispoKredit());
           
  }
  Iterator<Girokonto> it = list.iterator();
   while(it.hasNext()) {
   System.out.println(it.next());

   }


}
}

fehler :

Kontoverwaltung.java:34: illegal start of type
while(it.hasNext()) {
^
Kontoverwaltung.java:34: <identifier> expected
while(it.hasNext()) {
^
Kontoverwaltung.java:34: ';' expected
while(it.hasNext()) {
^
Kontoverwaltung.java:34: illegal start of type
while(it.hasNext()) {
^
Kontoverwaltung.java:34: <identifier> expected
while(it.hasNext()) {
^
Kontoverwaltung.java:34: ';' expected
while(it.hasNext()) {
^
Kontoverwaltung.java:35: illegal start of type
System.out.println(it.next());
^
Kontoverwaltung.java:35: ';' expected
System.out.println(it.next());
^
Kontoverwaltung.java:35: invalid method declaration; return type required
System.out.println(it.next());
^
Kontoverwaltung.java:35: <identifier> expected
System.out.println(it.next());
^
Kontoverwaltung.java:35: ';' expected
System.out.println(it.next());
^
Kontoverwaltung.java:35: illegal start of type
System.out.println(it.next());
^
Kontoverwaltung.java:35: <identifier> expected
System.out.println(it.next());
^
Kontoverwaltung.java:35: ';' expected
System.out.println(it.next());
^
Kontoverwaltung.java:41: class, interface, or enum expected
}
^
15 errors
 

sh33p

Bekanntes Mitglied
Java:
import java.util.*;
public class GiroKontoSortierer implements Comparator<Girokonto> {

public int compare(Girokonto g1, Girokonto g2){

if( g1.getKontostand() == g2.getKontostand()){
  if(g1.getDispoKredit() == g1.getDispoKredit()){
  return g1.getKontostand() + g2.getKontostand();
  }
  else {
    return g1.getDispoKredit() + g2.getDispoKredit();
  }
 }
 else if ( g1.getKontostand() > g2.getKontostand()){
   return 1;
 }
 else {
   return  -1;
 }
}
}

ich hab den GiroKontoSortierer erweitert und möchte erst nach dem Kontostand und dann nach dem dispokredit sortieren. hier habe ich nicht explizit angeben, was passiert wenn der dispokredit größer is als der andere..wie gehts jetzt weiter?wenn ich weitere if-abfragen starte,sagt mir der compiler unreachable statement
 

faetzminator

Gesperrter Benutzer
Davon ausgegangen, dass dies int's sind:
Java:
public int compare(Girokonto g1, Girokonto g2){
    if (g1.getKontostand() != g2.getKontostand()) {
        return g1.getKontostand() - g2.getKontostand(); // je nach auf- oder absteigend a - b oder b - a
    }
    return g1.getDispoKredit() - g2.getDispoKredit(); // hier ebenfalls
}
 

Der Müde Joe

Top Contributor
Java:
public int compare(Girokonto g1, Girokonto g2){
    return (g1.getKontostand() > g2.getKontostand()) ? 1 : (g1.getKontostand() < g2.getKontostand()) ? -1 : 0;
}
 

sh33p

Bekanntes Mitglied
okay. mir ist es aber erstmal ohne den ternären operator lieber:

Java:
import java.util.*;
public class GiroKontoSortierer implements Comparator<Girokonto> {

public int compare(Girokonto g1, Girokonto g2){
    if (g1 != g2) {
        return g1.getDispoKredit() - g2.getDispoKredit(); // je nach auf- oder absteigend a - b oder b - a
    }
    else{
      return g1.getKontostand() - g2.getKontostand(); // hier ebenfalls
}

}
}

wie sieht die abfrage weiter aus,wenn ich noch eine weitere variable z.b kontobezeichnung und eine 4. erstellungsdatum sortieren möchte?
 

faetzminator

Gesperrter Benutzer
1. Das else brauchst du nicht, da du in dem if einen [c]return[/c] hast.
2. [c]if (g1 != g2) {[/c] ist inkorrekt, mein Code ist korrekt.
3. 1:1 zu meinem Code Zeile 2 - 4, natürlich mit einem anderen Feld.
 

Der Müde Joe

Top Contributor
>okay. mir ist es aber erstmal ohne den ternären operator lieber:

dann solltest du das so machen:
Java:
if((g1.getKontostand() > g2.getKontostand())) { return 1; }
else if((g1.getKontostand() < g2.getKontostand()) { return -1;}
else {return 0;}

>wie sieht die abfrage weiter aus,wenn ich noch eine weitere variable z.b kontobezeichnung und eine 4. erstellungsdatum sortieren möchte?

Wie definierst du dann was grösser ist? Ist ein Konto mit mehr Geld grösser als ein Konto mit weniger Geld, das aber eine kleinere Id hat?
 

sh33p

Bekanntes Mitglied
Java:
public int compare(Girokonto g1, Girokonto g2){
    if (g1.getKontostand() != g2.getKontostand()) {
        return g1.getKontostand() - g2.getKontostand(); // je nach auf- oder absteigend a - b oder b - a
    }
    return g1.getDispoKredit() - g2.getDispoKredit(); // hier ebenfalls
}
}
   if(g1.getKontobezeichnung() != g2.getKontobezeichung()){
    return g1.getKontoBezeichnung.compareTo(g2.getKontoBezeichnung());
  }
  return g1.getDatum().compareTo(g2.getDatum());
}
}

was is falsch?
 

faetzminator

Gesperrter Benutzer
Java:
public int compare(Girokonto g1, Girokonto g2) {
    if (g1.getKontostand() != g2.getKontostand()) {
        return g1.getKontostand() - g2.getKontostand(); // je nach auf- oder absteigend a - b oder b - a
    }
    if (g1.getDispoKredit() != g2.getDispoKredit()) {
        return g1.getDispoKredit() - g2.getDispoKredit(); // hier ebenfalls
    }
    if(!g1.getKontobezeichnung().equals(g2.getKontobezeichung())) { // hier haben wir ein Objekt!
        return g1.getKontoBezeichnung.compareTo(g2.getKontoBezeichnung());
    }
    return g1.getDatum().compareTo(g2.getDatum());
}
 

Der Müde Joe

Top Contributor
>liegt es daran das kontobezeichnung vom typ string ist?

Auch String ist ein Objekt. Wenn auch ein sehr spezielles.

Nur die primitiven Typen sind keine Objekte. Dass sind: byte, short, int, long, float, double , boolean , char.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
G Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen


Oben