grazie And, anche se le collezioni sono nel capitolo dopo nelle dispense, quindi non capisco il prof. come vuole che facciamo l'esercizio...
Comunque mi sono un pò arrangiato ed ora il metodo funziona, anche se sinceramente è tutto fuorchè generico dato che ho dovuto fare diversi casting per farlo andare senza errori.
Praticamente ora mi opera solamente coi i tipi Integers, però non sono per niente soddisfatto dato che se volessi passargli un array di String non funzionerebbe na ceppa, non esiste un modo alternativo ai comparable od i comparator ?
Per spiegarmi meglio incollo il codice, omettendo le parti che non riguardano questo problema.
questa è la classe dove sta il metodo in questione:
codice:
package point;
public class Pair<T> {
private T primo, secondo;
public Pair(T primo, T secondo){
this.primo = primo;
this.secondo = secondo;
}
public void setPrimo(T x){ primo = x; }
public void setSecondo(T x){ secondo = x; }
public T getPrimo(){ return primo; }
public T getSecondo(){ return secondo; }
public Pair<T> copySwap(Pair<T> p){...}
public Pair<T> MinMax(T[] a){
T min = a[0];
for(int i = 0; i < a.length; i++){
if((Integer)min > (Integer)a[i]) {
min = a[i];
}
}
T max = a[0];
for(int i = 0; i < a.length; i++){
if((Integer)max < (Integer)a[i]) {
max = a[i];
}
}
Pair p = new Pair(0,0);
p.setPrimo(min);
p.setSecondo(max);
return p;
}
}
questo è il main dove testo il metodo:
codice:
package point; public class Main { public static void main(String[] args){
Integer[]a = {2, 5, 6, 9, 1, 4, 11 };
Pair<Integer> p = new Pair<Integer> ( 0, 0);
p = p.MinMax(a);
System.out.println(p.getPrimo()+"\n"+p.getSecondo());
}
}
Cioè il fatto che io debba dichiarare l'array di Integer unito al fatto che faccio un casting per operare sugli Integer mi rende inutile la "genericità" del metodo...
EDIT: mhh, ma non mi ha importatato l'indentazione perchè ho fatto un copi&incolla direttamente da NetBeans ?