2017-11-26 1 views
0

을 사용하여 실제 위해 트리 맵합니다.추가 목록 값이 나에게 다음과 같은 방법으로 출력을 제공 나는 다음과 같은 방식으로</p> <pre><code>List<Map<String, Object>> insurancePercentageDetails = dao.getinusrancePercentageDetails(age); </code></pre> <p>에서지도 개체의 목록을 가지고 자바

[{Age=42, Rate12=0.40, Rate24=0.63, Rate36=0.86, Rate48=1.12, Rate60=1.39, Rate72=1.67, Rate84=1.98, Rate96=2.31, Rate108=3.30, Rate120=3.84, Rate132=4.40, Rate144=5.00, Rate156=5.62, Rate168=6.28, Rate180=6.97, Rate192=7.34, Rate204=7.74, Rate216=8.15, Rate228=8.07, Rate240=8.33}] 

내 실제 목표는 내가 정적 목록 다음

private final static List<String> period = new ArrayList<> 
        (Arrays.asList("Rate12","Rate24","Rate36","Rate48","Rate60","Rate72","Rate84","Rate96","Rate108","Rate120", 
          "Rate132","Rate144","Rate156","Rate168","Rate180","Rate192","Rate204","Rate216","Rate228","Rate240")); 

TreeMap<String, Float> insuranceMatrixMap = new TreeMap<String, Float>(); 


for(String str : period) { 
      insuranceMatrixMap.put(str.replaceAll("Rate", ""), ((BigDecimal) (BBUtil.getInstance().getValue(insurancePercentageDetails, str))).floatValue()); 
     } 

이 걸렸다 다음 정렬 된 순서이 들어

{12=0.4,24=0.63 ....} 

에지도를하는 것입니다 나에게 출력을 준다

{108=3.3, 12=0.4, 120=3.84, 132=4.4, 144=5.0, 156=5.62, 168=6.28, 180=6.97, 192=7.34, 204=7.74, 216=8.15, 228=8.07, 24=0.63, 240=8.33, 36=0.86, 48=1.12, 60=1.39, 72=1.67, 84=1.98, 96=2.31} 

정렬되지 않음.

TreeMap은 정렬 된 순서로 키를 유지해야합니까? 그렇습니까?

여기에 누락 된 자료가 있습니까?

+1

정렬 순서이지만 *** 문자열 *** 조합 값에 따라 숫자 순서가 아닙니다. 숫자 순으로 정렬하려면 키를 'Integer'로 변경하거나 올바른 순서 지정을 제공하는 사용자 정의 Comparator를 제공해야합니다. –

+0

@ 짐 가르슨, 네 말이 맞아. TreeMap insuranceMatrixMap을 TreeMap insuranceMatrixMap으로 변경했습니다. 대답에 넣어주십시오. 나는 – Yakhoob

답변

0

이 같은 루프 전에 정렬 할 수 있습니다

Collections.sort(period, new Comparator<String>() { 
      @Override 
      public int compare(final String o1, final String o2) { 
       return Integer.valueOf(o1.replaceAll("Rate", "")) 
         .compareTo(Integer.valueOf(o2.replaceAll("Rate", ""))); 
      } 
     }); 
+0

을 받아 들일 것이다 짐 응답을 확인하십시오. 그 해결책은 충분합니다. 회신에 감사드립니다 – Yakhoob

1

당신이 바로 그 트리 맵이 키를 기준으로 정렬 할 것입니다. 하지만 귀하의 경우 키는 정수가 아닌 문자열입니다.

결과가 문자열 값에 따라 정렬됩니다. 즉, "108".compareTo ("12")는 음수가됩니다.

문자열 비교는 각 문자의 유니 코드 값을 기반으로합니다. Integer 값을 정렬하려면 TreeMap<Integer, Float>을 사용해야합니다.

+0

예. 옳은.. – Yakhoob

관련 문제