(Code unten)
Hallo,
ich möchte im Grunde über die zwei Set-Methoden jeweils die LinkedList speichern und über get-Methode die Daten auslesen. Dazu muss ich sie jedoch generisch in der Klasse speichern (dass man in der gesamten Klasse darauf zugreifen kann) und da habe ich die Probleme. Wie erzeuge ich die Variablen klassenweit generisch, denn so wie ich es mache muss ich oft Typ-Casting machen und bei einer Set-Methode geht dadurch der Comperator verloren, den ich jedoch benötige.
Ich hoffe ich konnte mein Problem darlegen und jemand kann mir etwas helfen.
Grüße faulix
Hallo,
ich möchte im Grunde über die zwei Set-Methoden jeweils die LinkedList speichern und über get-Methode die Daten auslesen. Dazu muss ich sie jedoch generisch in der Klasse speichern (dass man in der gesamten Klasse darauf zugreifen kann) und da habe ich die Probleme. Wie erzeuge ich die Variablen klassenweit generisch, denn so wie ich es mache muss ich oft Typ-Casting machen und bei einer Set-Methode geht dadurch der Comperator verloren, den ich jedoch benötige.
Ich hoffe ich konnte mein Problem darlegen und jemand kann mir etwas helfen.
Grüße faulix
Java:
package solutions;
import java.util.Collection;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import meinpaket.AbsSort;
public class Solution06 extends AbsSort {
private LinkedList<?> classList;
private Comparator<?> classComparator;
@Override
public <T> List<T> getData() {
if (classList != null) {
return this.classList;
}
return null;
}
@Override
public Object getMax() {
if (this.classList != null) {
Iterator<K> items = this.classList.iterator();
if (items.hasNext()) {
K actualMax = items.next();
while (items.hasNext()) {
K item = items.next();
if (this.classComparator.compare(actualMax, item) == -1) {
actualMax = item;
}
}
return actualMax;
}
}
return null;
}
@Override
public Object getMin() {
if (this.classList != null) {
Iterator<K> items = this.classList.iterator();
if (items.hasNext()) {
K actualMin = items.next();
while (items.hasNext()) {
K item = items.next();
if (this.classComparator != null && this.classComparator.compare(actualMin, item) == 1) {
actualMin = item;
}
}
return actualMin;
}
}
return null;
}
@Override
public <T extends Comparable<T>> void setData(Collection<T> arg0) {
if (arg0 != null) {
this.classList = new LinkedList<K>();
Iterator<T> items = arg0.iterator();
while (items.hasNext()) {
T item = items.next();
this.classList.add((K) item);
}
}
}
@Override
public <T> void setData(Collection<T> arg0, Comparator<T> arg1) {
if (arg0 != null && arg1 != null) {
this.classList = new LinkedList<K>();
Iterator<T> items = arg0.iterator();
while (items.hasNext()) {
T item = items.next();
this.classList.add((K) item);
}
this.classComparator = (Comparator<K>) arg1;
}
}
@Override
public void sort() {
LinkedList<K> newList = new LinkedList<K>();
while (this.classList != null && !this.classList.isEmpty()) {
K actualMin = (K) this.getMin();
newList.add(actualMin);
this.classList.remove(actualMin);
}
this.classList.addAll(newList);
}
@Override
public String[] getAuthors() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getTeam() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getVersion() {
// TODO Auto-generated method stub
return null;
}
}