Allocation dynamique de tableaux génériques

Kotomine Messages postés 112 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 5 novembre 2009 - 3 août 2009 à 13:24
Kotomine Messages postés 112 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 5 novembre 2009 - 3 août 2009 à 14:20
Hello, je me suis creusé la tête pour faire une fonction qui pond des "paires". Je m'explique:

j'ai une liste d'éléments générique E (je ne sais pas ce que c'est !)

Je souhaite en faire une liste de E[2], et dans chaque élément de cette liste, on trouve des couples possibles.

Bon ok j'aurais pu m'en sortir avec une double boucle sans faire ce que je m'aprete à faire. Enfin , par principe, je me demandais comment allouer ce E[2] sans passer par l'horreur ci-après:

public List<E[]> getPairs(List<E> list){
List<E[]> result = new ArrayList<E[]>();
E lol=list.get(0);
for(int i=0;i<list.size();i++){
@SuppressWarnings("unchecked")
E[] truc = (E[])Array.newInstance(lol.getClass() , 2);
// (si c'est pas dégueulasse ....)	
for(int j=i+1;j<list.size();j++){
truc[0]=list.get(i);
truc[1]=list.get(j);
result.add(truc);		
}



}
return result;
}



Si quelqu'un a une idée, je suis preneur !

;I'm just keeping the hopeless cross to increase the meaninglessness

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
3 août 2009 à 13:41
Salut,

Pourquoi utiliser un tableau ?

Je serais toi, je me ferais une classe Paire<E, F>
______________________________________
DarK Sidious
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
3 août 2009 à 13:47
Salut,

une petite question d'abord : la création de ton tableau ne devrait pas être dans la 2nde boucle for ?
Après je vois pas trop ce qui te gêne (j'avoue ne pas comprendre l'intérêt de la chose). Tu passes d'une liste d'éléments à une liste de tableaux d'éléments qui sont ceux de la liste groupés 2 par 2, tu es bien obligé de parcourir la 1ère liste par bloc de 2.
0
Kotomine Messages postés 112 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 5 novembre 2009
3 août 2009 à 14:20
* Oui, la création doit être dans la deuxième boucle. J'ai du reprendre une vieille version..
* Ce qui me gene, c'est de devoir extraire une variable (la fameuse E lol) uniquement pour avoir un .class , et de devoir caster "à la barbare"

Je cherche un moyen plus humble que de passer par le Array.newInstance, en gros ..


*Le probleme d'utiliser une classe paire, c'est .. la dégradation de performance de manipulation de ces couples.
L'idée étant de calculer tout ces couples 1x et de les distribuer à des unités de calcul.

myElt1[i]=myElt2[1-i] -> 2 déréférencements

myElt1.put(i, myElt2.get(1-i)) -> 4 : 2 (les appels) + 1 (pour obtenir l'objet contenu dans le get) + 1 (pour calculer l'addresse de destination)

Après je suis peut-être juste maniaque :x

;I'm just keeping the hopeless cross to increase the meaninglessness
0
Rejoignez-nous