반응형

자바(Java)에서 리스트 안에 HashMap이 들어 있을 때, List 안에 있는 HashMap에 대해 HashMap의 Key와 Value에 맞게 데이터가 있는지 확인을 하기 위해 Object형을 HashMap으로 바꿔야 한다. 그래서, Object 형을 HashMap 형태로 바꾸는 방법을 기록한다.

 

1. pom.xml에 아래의 jackson.core dependency를 추가한다. 기본적으로 스프링 프로젝트를 할 때, jackson.core를 많이 사용하기 때문에 기본적으로 있을 것이다.

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.10.1</version>
</dependency>

 

2. 그러고 나서, 이젠 캐스팅을 해주면 된다.

아래의 코드는 리스트를 가져와서, 오름차순으로 정렬하는 Collections.sort의 compare 함수다. o1과 o2는 HashMap<String, Object> 형태의 변수이며, map은 o1의 key가 되고, 이 key에 해당하는 Value는 Object형의 데이터다. 그래서, 이 Object의 Value를 HashMap으로 변환하는 코드다. 

Collections.sort(list, new Comparator<HashMap<String, Object>>() {
    @Override
    public int compare(HashMap<String, Object> o1, HashMap<String, Object> o2) {

        HashMap o1HashMap = (HashMap) o1.get("map");
        HashMap o2HashMap = (HashMap) o2.get("map");

        String testNo1 = ((DataMap) o1HashMap).getString("NO");
        String testNo2 = ((DataMap) o2HashMap).getString("NO");

        return testNo1.compareTo(testNo2);
    }
});

 

이렇게 Object를 HashMap으로 캐스팅하여 변환할 수 있다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기