Voici ce que j'avoir-Liste de tri des HashMaps en fonction des valeurs hashmap [pas] touches
Comment puis-je inclure plusieurs clés et leurs valeurs par rapport? En ce moment, je ne sers employeeId mais je voulais inclure departmentId et d'autres dans ma comparaison pour le tri ...
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
public class Tester {
boolean flag = false ;
public static void main(String args[]) {
Tester tester = new Tester() ;
tester.printValues() ;
}
public void printValues()
{
List<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>() ;
HashMap<String,Object> map = new HashMap<String,Object>();
map = new HashMap<String,Object>();
map.put("employeeId", new Integer(1234)) ;
map.put("departmentId", new Integer(110)) ;
map.put("someFlag", "B") ;
map.put("eventTypeId", new Integer(11)) ;
map.put("startDate", new Date()) ;
map.put("endDate", new Date()) ;
list.add(map);
map = new HashMap<String,Object>();
map.put("employeeId", new Integer(456)) ;
map.put("departmentId", new Integer(100)) ;
map.put("someFlag", "B") ;
map.put("eventTypeId", new Integer(11)) ;
map.put("startDate", new Date()) ;
map.put("endDate", new Date()) ;
list.add(map);
map = new HashMap<String,Object>();
map.put("employeeId", new Integer(1234)) ;
map.put("departmentId", new Integer(10)) ;
map.put("someFlag", "B") ;
map.put("eventTypeId", new Integer(17)) ;
map.put("startDate", new Date()) ;
map.put("endDate", new Date()) ;
list.add(map);
map = new HashMap<String,Object>();
map.put("employeeId", new Integer(1234)) ;
map.put("departmentId", new Integer(99)) ;
map.put("someFlag", "B") ;
map.put("eventTypeId", new Integer(11)) ;
map.put("startDate", new Date()) ;
map.put("endDate", new Date()) ;
list.add(map);
map = new HashMap<String,Object>();
map.put("employeeId", new Integer(1234)) ;
map.put("departmentId", new Integer(100)) ;
map.put("someFlag", "B") ;
map.put("eventTypeId", new Integer(11)) ;
map.put("startDate", new Date()) ;
map.put("endDate", new Date()) ;
list.add(map);
map = new HashMap<String,Object>();
map.put("employeeId", new Integer(567)) ;
map.put("departmentId", new Integer(200)) ;
map.put("someFlag", "P") ;
map.put("eventTypeId", new Integer(12)) ;
map.put("startDate", new Date() ) ;
map.put("endDate", new Date()) ;
list.add(map);
Collections.sort (list , new HashMapComparator2()) ;
for(int i = 0 ; i < list.size() ; i ++) {
System.out.println(list.get(i));
}
System.out.println("======================================");
flag = true ; // desc
Collections.sort (list , new HashMapComparator2()) ;
for(int i = 0 ; i < list.size() ; i ++) {
System.out.println(list.get(i));
}
}
public class HashMapComparator2 implements Comparator
{
public int compare (Object object1 , Object object2)
{
if (flag == false)
{
Integer obj1Value = (Integer) ((HashMap) object1).get ("employeeId") ;
Integer obj2Value = (Integer) ((HashMap) object2).get ("employeeId") ;
return obj1Value.compareTo (obj2Value) ;
}
else
{
Integer obj1Value = (Integer) ((HashMap) object1).get ("employeeId") ;
Integer obj2Value = (Integer) ((HashMap) object2).get ("employeeId") ;
return obj2Value.compareTo (obj1Value) ;
}
}
}
}
Si mes conditions de tri changent, devrais-je définir une nouvelle classe Comparator à chaque fois? – jagamot