Normalement, pour commencer, tu devrais avoir des méthodes dans Contact pour récupérer des informations d'un contact, dont tu as la référence :
1 2 3 4 5 6 7 8 9 10 11 12
| public class Contact {
String nom = "Inconnu";
public Contact(String nom) {
this.nom = nom;
}
public String getNom() {
return nom;
}
} |
Ensuite, dans la classe Affaire, il faudrait avoir des méthodes pour récupérer les contacts. Là, ça dépend de ce que tu as besoin.
Tu peux avoir, une méthode qui permet de récupérer l'ensemble des contacts d'une Affaire :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class Affaire {
static private int compteurAffaire; //Compteur Nbre d'Affaire en cours // attention au passage à ce genre de chose en multithread, préférez un AtomicInteger
String affaire; //Nom de l'Affaire
List<Contact> contacts = new ArrayList();
public Affaire(String affaire) {
compteurAffaire++;
this.affaire = affaire;
}
public List<Contact> getContacts() {
return Collections.unmodifiableList(contacts);
}
} |
Si tu as besoins de la liste des noms des contacts, il suffira de faire :
1 2
| Affaire affaire = ... /* on a une référence d'affaire, dont on veut la liste des noms des contacts */
List<String> nomDesContacts = affaire.getContacts().stream().map(Contact::getNom).collect(Collectors.toList()) |
Si tu as souvent besoin d'avoir ce genre de listes pour différentes informations des contacts, tu ajouter une méthode à Affaire :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class Affaire {
static private int compteurAffaire; //Compteur Nbre d'Affaire en cours // attention au passage à ce genre de chose en multithread, préférez un AtomicInteger
String affaire; //Nom de l'Affaire
List<Contact> contacts = new ArrayList();
public Affaire(String affaire) {
compteurAffaire++;
this.affaire = affaire;
}
public List<Contact> getContacts() {
return Collections.unmodifiableList(contacts);
}
public <T> List<T> getContactInformationList(Function<Contact, T> function) {
return contacts.stream().map(c->function.apply(c)).collect(Collectors.toList());
}
} |
Et ensuite tu pourras écrire :
1 2
| Affaire affaire = ... /* on a une référence d'affaire, dont on veut la liste des noms des contacts */
List<String> nomDesContacts = affaire.getContactInformationList(Contact::getNom); |
Pour avoir la liste des noms,
ou
List<String> telDesContacts = affaire.getContactInformationList(Contact::getPhoneNumber);
si tu as bien une méthode public String getPhoneNumber() dans Contact
voire même :
List<Integer> ageDesContacts = affaire.getContactInformationList(Contact::getAge);
Partager