다음은 내가 가지고있는 것입니다.hashMap 값 [not keys]을 기반으로하는 HashMaps 목록
어떻게 여러 키와 그 값을 비교할 수 있습니까? 지금 내가 대신 HashMaps을의 목록을 사용하여 데이터를 저장하는 클래스를 만들 것이다
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) ;
}
}
}
}
정렬 조건이 변경되면 매번 새로운 Comparator 클래스를 정의해야합니까? – jagamot