OOP Objekteigenschaften Höchstwert

F

FranzFerdinand

Gast
Hallöle,

ich habe einmal ein ganz primitives Beispiel.
Ich habe eine Klasse Auto mit diversen Autoeigenschaften.
Anschließend habe ich die Klasse Herstellung, in welcher ich ganz primitiv neue Autos generiere und die Eigenschaften herstelle.

Ich persönlich frage mich nun:
Gibt es eine seriöse, schnelle Variante, wie ich das Auto herausfinde, welches den höchsten Wert bei der Eigenschaften "groesse" hat?

Vielen Dank im Voraus.

Gruß
Lukas
 

Flown

Administrator
Mitarbeiter
Was machst du mit deinen "hergestellten" Autos? Wie speicherst du diese?

Code wäre auch nicht schlecht!
 
Zuletzt bearbeitet:
F

FranzFerdinand

Gast
Ups ups, ich hab zu schnell gepostet, ich habe vergessen den Code zu posten, sorry.

Die Klasse Auto:
Java:
package root;

import java.awt.Color;

public class Auto {


	private int reifengroesse;
	private String hersteller;
	private String modellname;
	private String modelltyp;
	private long groesse;
	private Color farbe;
	private int x, y;
	
	@Override
	public String toString() {
		return "Auto [reifengroesse=" + reifengroesse + ", hersteller="
				+ hersteller + ", modellname=" + modellname + ", modelltyp="
				+ modelltyp + ", groesse=" + groesse + ", farbe=" + farbe
				+ ", x=" + x + ", y=" + y + "]";
	}
	
	public String getHersteller() {
		return hersteller;
	}

	public void setHersteller(String hersteller) {
		this.hersteller = hersteller;
	}

	public String getModellname() {
		return modellname;
	}

	public void setModellname(String modellname) {
		this.modellname = modellname;
	}
	
	public String getModelltyp() {
		return modelltyp;
	}

	public void setModelltyp(String modelltyp) {
		this.modelltyp = modelltyp;
	}

	public long getGroesse() {
		return groesse;
	}

	public void setGroesse(long l) {
		this.groesse = l;
	}

	public Color getFarbe() {
		return farbe;
	}

	public void setFarbe(Color farbe) {
		this.farbe = farbe;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	public int getReifengroesse() {
		return reifengroesse;
	}

	public void setReifengroesse(int reifengroesse) {
		this.reifengroesse = reifengroesse;
	}

}

Und Herstellung:
Java:
package root;

import java.awt.Color;

public class Herstellen {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Auto dabendorf = new Auto();
		dabendorf.setFarbe(Color.GREEN);
		dabendorf.setGroesse(120);
		dabendorf.setHersteller("VEB Dabendorf");
		dabendorf.setModellname("Dabendorf");
		dabendorf.setModelltyp("");
		dabendorf.setReifengroesse(25);
		System.out.println(dabendorf);
		
		Auto berlin = new Auto();
		berlin.setFarbe(Color.DARK_GRAY);
		berlin.setGroesse(100);
		berlin.setHersteller("Klaus Wowereit");
		berlin.setModellname("Pleitegeier I.");
		berlin.setModelltyp("");
		berlin.setReifengroesse(30);
		System.out.println(berlin);
		
		Auto napoleon = new Auto();
		napoleon.setFarbe(Color.BLUE);
		napoleon.setGroesse((long)(3*Math.pow((double)(10), 42)));
		napoleon.setHersteller("KLINGER");
		napoleon.setModellname("Grand Armée");
		napoleon.setModelltyp("");
		napoleon.setReifengroesse(1000);
		System.out.println(napoleon);
	}

}

In herstellung hab ich einfach mal 3 Beispielautos drin. Soll potentiell auch für 1000 Autos laufen.
 

Flown

Administrator
Mitarbeiter
Da brauchst du Aggregationen (Arrays, Collections), dann kannst du auf diese Strukturen Minima und Maxima berechnen.
 

CSHW89

Bekanntes Mitglied
Ungefär so:
Java:
List<Auto> liste = new LinkedList<Auto>();
Auto auto;

auto = new Auto();
auto.setFarbe(...);
...
liste.add(auto);

auto = new Auto();
...
liste.add(auto);
...
In 'liste' hast du dann alle deine Autos. Darüber kannst du dann iterieren, oder, falls du Java 8 benutzt, Stream verwenden (ungetestet):
Java:
Auto minAuto = liste.stream().min((a, b) -> a.getGroesse() - b.getGroesse()).get();
lg Kevin
 
Zuletzt bearbeitet:

Network

Top Contributor
Das was CSHW89 oben angebracht hat wäre eine Möglichkeit auch wenn mir komplett schleierhaft ist warum er eine LinkedList verwendet. *kratz kratz*
In solchen Fällen dann doch bitte ein HashSet wenn es nur darum geht über die Objekte zu iterieren.
Code:
for( Auto auto : hashset )
     auto.getGroese();

Du könntest natürlich auch direkt in deiner Fabrik-Klasse oder anderstwo beim Erstellen abfragen welches Auto das größte ist, dann musst du nicht jedesmal erneut über die Liste iterieren.
Hier würde sich eine Fabrikmethode oder zu english factory method anbieten.
 

CSHW89

Bekanntes Mitglied
LinkedList, warum nicht? Da kannst du auch darüber iterieren. Es ist ja nicht klar, was FranzFerdinand noch mit den Autos machen will. Die Ordnung geht bspw. bei nem HashSet verloren. Das erste erstellte Auto ist im Normalfall nicht das erste Auto in der HashSet. Ne ArrayList wäre hier aber vielleicht noch besser, falls er keine Autos aus der Liste löschen möchte. Wie gesagt, alles abhängig von den weiteren Anforderungen.

lg Kevin
 

Oben