1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2017
    Messages : 6
    Points : 3
    Points
    3

    Par défaut Opération sur des classes générique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 397
    Points : 48 608
    Points
    48 608

    Par défaut

    Non, il n'y a pas de surcharge des opérateurs en java. Le mieux que tu puisse avoir c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Liste[i] = Liste[i].multiply(other[i])
    Il s'agit alors d'une méthode java de Vector, tout ce qu'il y a de plus classique à écrire.

    Par contre, si tu veux paralléliser tes calculs, les méthodes de l'interface Stream (parallel) seraient peut être préférable au démarrage de nouveaux threads.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2017
    Messages : 6
    Points : 3
    Points
    3

    Par défaut

    Super merci

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2017
    Messages : 6
    Points : 3
    Points
    3

    Par défaut

    J'ai une erreur qui me dits que la méthode multiply n'est pas définie sur T

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 397
    Points : 48 608
    Points
    48 608

    Par défaut

    Ha je pensais que tu voulais multiplier les vecteur, pas leur Number.

    pour ce qui est de travailler avec le number, il n'y a pas d'avance, tu va devoir écrire chaque cas en testant le type de Number et en typecastant vers le type en question.

Discussions similaires

  1. [Tableaux] Opérations sur des données temporelles
    Par MmoulinexX dans le forum Fonctions
    Réponses: 1
    Dernier message: 30/10/2006, 12h26
  2. Opérations sur des dates
    Par loreleï85 dans le forum PHP & SGBD
    Réponses: 4
    Dernier message: 16/10/2006, 17h01
  3. opération sur des champs déjà manipulés
    Par fred23195 dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 23/08/2006, 16h16
  4. [Dates] Question pour opérations sur des heures
    Par Sangdrax1604 dans le forum Fonctions
    Réponses: 7
    Dernier message: 23/08/2006, 11h07
  5. Opération sur des heures dans Excel
    Par mirascheat dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2005, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo