Récupérer contenu d'un tableau à partir d'une liste
jj1k
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
newOb c'est un objet qui à comme champs (id, origin,to,destination, td, capacite, eo, em, dtm, dtd, lo, ed, ld)
j'ai tésté ma liste est si vide je la rempli avec al.add(newOb.origin); et al.add(newOb.destination);
et aprés je parcours cette liste et je veux récupérer newOb.eo d'apres l'origine !
comment je peux le faire ?
aidez moi s'il vous plait
int Cap = 5; String débuttournée; ArrayList al = new ArrayList(); 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++; System.out.println(al.size()); } } 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) { } } } }
newOb c'est un objet qui à comme champs (id, origin,to,destination, td, capacite, eo, em, dtm, dtd, lo, ed, ld)
j'ai tésté ma liste est si vide je la rempli avec al.add(newOb.origin); et al.add(newOb.destination);
et aprés je parcours cette liste et je veux récupérer newOb.eo d'apres l'origine !
comment je peux le faire ?
aidez moi s'il vous plait
A voir également:
- Récupérer contenu d'un tableau à partir d'une liste
- Liste déroulante excel - Guide
- Tableau word - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
2 réponses
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.
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
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()))); } }