Récupérer contenu d'un tableau à partir d'une liste
Fermé
jj1k
Messages postés
30
Date d'inscription
jeudi 8 juin 2017
Statut
Membre
Dernière intervention
3 septembre 2017
-
Modifié le 14 juin 2017 à 08:18
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 14 juin 2017 à 19:30
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 14 juin 2017 à 19:30
A voir également:
- Récupérer contenu d'un tableau à partir d'une liste
- Liste déroulante excel - Guide
- Tableau croisé dynamique - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Tableau ascii - Guide
2 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
14 juin 2017 à 09:07
14 juin 2017 à 09:07
Bonjour,
Il faut que tu crées et manipule des méthodes dans ta classe Cvs.
Ce genre de code :
Pour le reste ton code est incomplet pour que l'on puisse tester mais pour donner quelquechose de bien il va falloir beaucoup de ménage dans le code.
En particulier tu ne devrais pas mélanger modification de données et affichage. Les println n'ont rien à faire là, il faut que ta méthode renvoie un résultat et c'est ce résultat que tu afficheras.
Il faut que tu crées et manipule des méthodes dans ta classe Cvs.
Ce genre de code :
(newOb.to) = newOb.eo; (newOb.td) = newOb.to + newOb.DTD;Ça ne concerne que newOb donc c'est uniquement à lui de s'occuper de son changement d'état.
Pour le reste ton code est incomplet pour que l'on puisse tester mais pour donner quelquechose de bien il va falloir beaucoup de ménage dans le code.
En particulier tu ne devrais pas mélanger modification de données et affichage. Les println n'ont rien à faire là, il faut que ta méthode renvoie un résultat et c'est ce résultat que tu afficheras.
jj1k
Messages postés
30
Date d'inscription
jeudi 8 juin 2017
Statut
Membre
Dernière intervention
3 septembre 2017
Modifié le 14 juin 2017 à 16:48
Modifié le 14 juin 2017 à 16:48
J'ai fais l'affichage pour voir si le code ça marche ou pas !
je veux lorsque je rempli la liste avec une valeur provenant d'un tableau je peux accéder aux autres valeurs du tableau à partir du valeur inséré dans la liste
voici le code complet
newOb.to= al.get(j)+ dist(newOb.origin, al.get(j));
je veux apres al.get(j) il s'affiche liste des champs
Merci d'avance
je veux lorsque je rempli la liste avec une valeur provenant d'un tableau je peux accéder aux autres valeurs du tableau à partir du valeur inséré dans la liste
voici le code complet
package list; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import FIPA.stringsHelper; import jade.core.Agent; import jade.core.behaviours.Behaviour; import jade.core.behaviours.CyclicBehaviour; import jade.core.behaviours.FSMBehaviour; import jade.lang.acl.ACLMessage; import jade.lang.acl.UnreadableException; @SuppressWarnings("serial") public class Linkedlist extends Agent { protected String role; List<Cvs> listCvs = new LinkedList<Cvs>(); // protected void setup(){ System.out.println("---------------------------------------"); System.out.println("----------------agent c----------------"); System.out.println("---------------------------------------"); FSMBehaviour agentA_beh= new FSMBehaviour(); agentA_beh.registerFirstState(new attendreAgentB(), "attendreAgentB"); addBehaviour(agentA_beh); } private class attendreAgentB extends CyclicBehaviour{ int Cap=5 ; String débuttournée ; ArrayList al = new ArrayList(); LinkedList<Cvs> listedemande = new LinkedList<Cvs>(); @Override public void action() { String x; Object[] table=null; ACLMessage aclMessage = receive(); if (aclMessage!=null) { try { table= (Object[]) aclMessage.getContentObject(); } catch (UnreadableException e) { // TODO Auto-generated catch block e.printStackTrace(); } Cvs newOb = new Cvs(); for (int i = 0; i < table.length; i++) { newOb = (Cvs) table[i]; if (al.isEmpty()==true) { if (Cap > newOb.capacite ){ Cap= Cap-newOb.capacite; al.add(newOb.origin); (newOb.to)= newOb.eo; (newOb.td)= newOb.to+ newOb.DTD; al.add(newOb.destination); Cap= Cap - newOb.capacite; System.out.println(Cap); i++; } } else { for(int j = 0; j < al.size(); j++) { System.out.println(al.get(j)); if ( al.get(j) + dist(al.get(j) , newOb.eo )< newOb.lo ) { al.add(newOb.origin); newOb.to= al.get(j)+ dist(newOb.origin, al.get(j)); } } } } } } block(); } } public void addBehaviour(String role, Behaviour b) { addBehaviour(b); this.role = role; } }
newOb.to= al.get(j)+ dist(newOb.origin, al.get(j));
je veux apres al.get(j) il s'affiche liste des champs
Merci d'avance
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
14 juin 2017 à 19:30
14 juin 2017 à 19:30
Et ce code compile !?
Comment tu fais par exemple pour avoir
Bref ton code c'est vraiment le bazar... Revenons donc directement à la question :
"je veux lorsque je rempli la liste avec une valeur provenant d'un tableau je peux accéder aux autres valeurs du tableau à partir du valeur inséré dans la liste"
C'est loin d'être super clair, mais si je comprends bien, il faudrait que tu stockes la valeur ainsi que le tableau associé dans ta liste et pas juste la valeur seule.
Comme ça en recherchant dans ta liste la valeur souhaitée tu trouveras le tableau attendu puisqu'il est stocké avec.
Exemple :
Comment tu fais par exemple pour avoir
if (al.get(j) + dist(al.get(j), newOb.eo) < newOb.lo)avec une
ArrayList al = new ArrayList();?
al.get(j)va renvoyer un Object or on ne peut pas utiliser
+dans ce cas !
Bref ton code c'est vraiment le bazar... Revenons donc directement à la question :
"je veux lorsque je rempli la liste avec une valeur provenant d'un tableau je peux accéder aux autres valeurs du tableau à partir du valeur inséré dans la liste"
C'est loin d'être super clair, mais si je comprends bien, il faudrait que tu stockes la valeur ainsi que le tableau associé dans ta liste et pas juste la valeur seule.
Comme ça en recherchant dans ta liste la valeur souhaitée tu trouveras le tableau attendu puisqu'il est stocké avec.
Exemple :
public class ValueWithComplement<V, C> { private final V value; private final C complement; public ValueWithComplement(V value, C complement) { this.value = value; this.complement = complement; } public V getValue() { return value; } public C getComplement() { return complement; } public static <V, C> C searchValueIn(V value, Stream<ValueWithComplement<V, C>> stream) { return stream .filter(x -> value.equals(x.value)) .map(x -> x.getComplement()) .findAny().orElse(null); } }
public class Test { public static void main(String[] args) { String[] tabA = { "a0", "a1", "a2" }; String[] tabB = { "b0", "b1", "b2" }; List<ValueWithComplement<String, String[]>> list = Arrays.asList( new ValueWithComplement<>("a1", tabA), new ValueWithComplement<>("b0", tabB) ); System.out.println(Arrays.toString( // [a0, a1, a2] ValueWithComplement.searchValueIn("a1", list.stream()))); System.out.println(Arrays.toString( // [b0, b1, b2] ValueWithComplement.searchValueIn("b1", list.stream()))); } }