compareTo verwenden

canyakan95

Bekanntes Mitglied
Hallo gegeben sind folgende zwei Klassen und ich soll folgende aufgabe lösen:
DieMethode sucheNeuesMedium gibt dieDaten desMediums mit dem jüngsten
Erscheinungsjahr auf der Konsole aus (falls mehrere Medien mit dem gleichen
Erscheinungsjahr vorliegen, kann einfach eines dieserMedien gewähltwerden).

Java:
public class Medienverwaltung implements Comparable<Medium> {

    private Medium[] medium ;
    private int max;
    private int pos=0;
  
    public Medienverwaltung(Medium[] medium,int max){      
        medium = new Medium[max];
        this.max=max;
    }
  
    public void aufnehmen(Medium m){
        if(pos<medium.length){
            medium[++pos]=m;
        }
        else
        {
            System.out.println("Kein Platz mehr! - Medium wurde nicht aufgenommen");
        }
    }
  
    public void zeigeMedien(){      
        for(int i=0;i<medium.length;i++){
            if(medium[i]!=null){              
                System.out.println(medium[i].getString());
            }
        }
    }
  
    public double berechneErscheinungsjahr(){
        double erg=0;
        if(medium.length==0){
            return 0.0;
        }
        else{
            for(int i=0;i<medium.length;i++){
                erg+=medium[i].getJahr();
            }
        }
        return (erg/medium.length);
    }
  
    public void sucheNeuesMedium(){
  
      
    }

    @Override
    public int compareTo(Medium o) {      
    }  
}

import java.time.LocalDate;

public abstract class Medium {
    private String titel;
    private int jahr;
    private static int id=-1;
  
    public Medium(String titel,int jahr){
        this.titel=titel;
        this.jahr=jahr;
        id+=1;
    }
  
    public String getString()
    {
        return this.titel;
    }
  
    public int getId(){
        return Medium.id;
    }
  
    public int getJahr(){
        return jahr;
    }
  
    public int alter(){
        //LocalDate jahr = LocalDate.now();
        return LocalDate.now().getYear()-this.jahr;
    }
    public abstract void druckeDaten();
}

Könnt ihr mir evtl helfen und zeigen wie ich über die klasse medienverwaltung getJahr von Medium erreiche und die vergleiche...und habe ich schonmal comparable mit dem typparameter richtig gemacht ?
Mfg
 
Zuletzt bearbeitet von einem Moderator:
Edit: Würde das so klappen???

Java:
import java.util.Comparator;

public class Vergleicher implements Comparator <Medium>{
    @Override
    public int compare(Medium o1, Medium o2) {     
        return Double.compare(o1.getJahr(), o2.getJahr());     
    } 
}

...

    public void sucheNeuesMedium(){ 
        Arrays.sort(medium,new Vergleicher());
        System.out.println(medium[0].getJahr());
    }
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben