Opération sur des classes générique
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
public class Vector0<T extends Number> {
private T Liste[];
public Double result[];
int taille_liste,nbre_thread,taille_bloc;
Thread Thread_list[];
public Vector0(T[] liste2,int N_Thread) {
Liste = liste2;
nbre_thread = N_Thread;
init();
}
private void init() {
taille_liste = Liste.length;
result = new Double[taille_liste];
if (nbre_thread > taille_liste) {
nbre_thread = taille_liste;
}
taille_bloc = taille_liste/nbre_thread;
Thread_list = new Thread[nbre_thread];
}
public Number[] getVector() {
return Liste;
}
public void mul(Vector0<T> vecteur2) {
int a;
a = vecteur2.getVector().length;
if(a == taille_liste){
int b_inf,b_supp;
b_inf = 0;
b_supp = taille_bloc;
for (int i = 0; i < nbre_thread - 1 ; i++) {
Thread_list[i] = new Thread(new ThreadMull(b_inf,b_supp,vecteur2));
b_inf = b_supp;
b_supp += taille_bloc;
}
Thread_list[nbre_thread-1] = new Thread(new ThreadMull(b_inf,taille_liste,vecteur2));
for(int i=0;i<nbre_thread;i++) {
Thread_list[i].start();
}
for(int i=0;i<nbre_thread;i++) {
try {
Thread_list[i].join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Liste = (T[]) result;
}
public class ThreadMull implements Runnable {
private int borne1, borne2;
Number other[];
public ThreadMull(int lim1, int lim2,Vector0<T> vecteur2) {
borne1 = lim1;
borne2 = lim2;
other = vecteur2.getVector();
}
public void run() {
for(int i = borne1;i< borne2;i++) {
result[i] = (Liste[i].doubleValue() * other[i].doubleValue());
}
}
} |
Bonjour je voudrais faire une classe vecteur sur laquelle je pourrais faire des opérations +,* mais je n'ai pas trouvé d'autre moyen que de passer par une liste que je réassigne par la suite y a-t-il une possibilité de directement modifier la liste de base. Mon problème se trouve dans la dernière ligne de code (94) je voudrais pouvoir faire quelque chose comme Liste[i] = Liste[i]*other[i]
Merci d'avance