Groupe une liste d'objets par un attribut : Java
J'ai besoin de groupe de la liste d'objets(Étudiant) à l'aide d'un attribut(Emplacement) de l'objet particulier, le code est comme ci-dessous,
public class Grouping {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
List<Student> studlist = new ArrayList<Student>();
studlist.add(new Student("1726", "John", "New York"));
studlist.add(new Student("4321", "Max", "California"));
studlist.add(new Student("2234", "Andrew", "Los Angeles"));
studlist.add(new Student("5223", "Michael", "New York"));
studlist.add(new Student("7765", "Sam", "California"));
studlist.add(new Student("3442", "Mark", "New York"));
//Code to group students by location
/* Output should be Like below
ID : 1726 Name : John Location : New York
ID : 5223 Name : Michael Location : New York
ID : 4321 Name : Max Location : California
ID : 7765 Name : Sam Location : California
*/
for (Student student : studlist) {
System.out.println("ID : "+student.stud_id+"\t"+"Name : "+student.stud_name+"\t"+"Location : "+student.stud_location);
}
}
}
class Student {
String stud_id;
String stud_name;
String stud_location;
Student(String sid, String sname, String slocation) {
this.stud_id = sid;
this.stud_name = sname;
this.stud_location = slocation;
}
}
Veuillez me suggérer un moyen propre à le faire.
- Une table de hachage avec l'emplacement de la clé et les étudiants de la liste en tant que valeur.
- Serait tri par lieu de résoudre votre problème, ou est-il autre chose?
- Essayez d'utiliser un Comparateur et trier par emplacement.
- Oui, Mais d'aller plus loin si j'ai besoin d'obtenir de l'information comme, nombre d'Étudiants par l'Endroit le mieux si je pouvais obtenir regroupés
- S'il vous plaît pouvez-vous me donner un indice par le code, je suis pas si familier avec Hashmaps
- cocher l'une des réponses ci-dessous.
- Je pense que la réponse ici stackoverflow.com/a/8464106/673086 s'applique aussi à ce problème.
InformationsquelleAutor Dilukshan Mahendra | 2014-02-10
Vous devez vous connecter pour publier un commentaire.
Cela va ajouter les étudiants de l'objet de la
HashMap
aveclocationID
en tant que clé.Itérer sur ce code et ajouter des élèves à la
HashMap
:Si vous souhaitez que tous les étudiants, avec en particulier les détails de localisation, alors vous pouvez utiliser ceci:
qui va vous arriver à tous les élèves le même emplacement ID.
Dans Java 8:
Student
classestud_location
est spécifié comme Amicale. SeulementStudent
classe et toute la classe qui est définie dans le même package deStudent
pouvez accéder àstud_location
. Si vous mettezpublic String stud_location;
au lieu deString stud_location;
, cela devrait fonctionner. Ou vous pouvez définir une fonction get. Plus d'infos dans cs.princeton.edu/courses/archive/spr96/cs333/java/tutorial/java/...À L'Aide De Java 8
Le résultat sera:
Vous pouvez utiliser les éléments suivants:
//imprimer
Mettre en œuvre SQL GROUPE PAR Fonction en Java à l'aide du Comparateur, comparateur permettra de comparer vos données de colonne, et les trier. Fondamentalement, si vous conservez les données triées qui a l'air de données groupées, par exemple, si vous avez même répétée de données de la colonne puis trier mécanisme de trier conserver les données d'un côté puis de chercher d'autres données qui est dissemblable de données. Ce indirectement, considéré comme le REGROUPEMENT des mêmes données.
De sortie est ici pour le dessus de ProductBean liste se fait en GROUPE PAR des critères, ici, si vous voyez les données d'entrée qui est donné de la liste de ProductBean pour les Collections.de tri(liste, objets de Comparateur pour votre colonne requise) Ce sera de tri basé sur votre comparateur de mise en œuvre et vous serez en mesure de voir les données GROUPÉES en dessous de sortie. Espérons que cela aide...
Vous pouvez trier comme ceci:
En supposant que vous aussi vous avez de la lecture pour l'emplacement de votre Élève de la classe.
Vous pourriez faire ceci:
les clés seront les emplacements et les valeurs de la liste des élèves. Plus tard, vous pouvez obtenir un groupe d'étudiants en utilisant simplement:
vous pouvez utiliser
guava
'sMultimaps
d'impression:
Si vous souhaitez ajouter plusieurs objets pour le groupe, vous pouvez simplement ajouter l'objet dans
compositKey
méthode de séparation par une virgule: