2013-02-11 5 views
0
List<Map<String,String>> consolidErr = new LinkedList<Map<String,String>>(); 

Map m1= new HashMap<String,String>(); 
m1.put("id","1"); 
m1.put("value","value1"); 

Map m2= new HashMap<String,String>(); 
m2.put("id","2"); 
m2.put("value","value2"); 

Map m3= new HashMap<String,String>(); 
m3.put("id","3"); 
m3.put("value","value3"); 

add all m1,m3 and m2 in list 

그런 다음 id를 기반으로 맵을 맵에 정렬합니다. 목록의 맵을 m1, m2 및 m3으로 지정합니다.내부 목록을 정렬하는 방법

이제지도의 ID를 기준으로 정렬하고 싶습니다. 목록 반복을 사용하여 검사기로지도의 첫 번째 ID를 유지하고 기본 제공 ID를 사용하는 것보다 다른 방법이 더 좋은 경우 다음과 비교합니다. 방법. 제발 아이디어를주세요. 지금이 거품 정렬을 사용합니다.

+0

사용'Collections.sort' –

+0

@RohitJain의 답장을 보내 주셔서 감사하지만 기반지도의 어떤 객체가 ID 또는지도의 값을 정렬됩니다.? – sunleo

+0

'id' 키를 ​​찾아서 값을 얻습니다. –

답변

4

Java에서이 작업을 수행하는 가장 간단한 방법은 최소한 사용자 정의 컴파일러를 사용하는 것입니다.

자연어 정렬 (Comparable을 확장하는 모든 것)이있는 객체는 정렬을 요청할 수 있습니다.

Collections.sort(List<Integer> .. 

그렇지 않으면 객체를 비교하는 방법을 설명하는 Comparator를 원하는 맞춤 논리와 함께 전달할 수 있습니다. (대략 -이 내 머리 위로 떨어져 있으며 오류 검사를하지 않지만, 당신에게 아이디어를 제공하기에 충분합니다) -

List<Map<String,String>> consolidErr = ... 
enter code here 
Collections.sort(consolidErr, new Comparator<Map<String,String>>(){ 
    public int compare(Map<String,String> a, Map<String,String> b){ 
     return a.get("id").compareTo(b.get("id"));} 
    }) 
+0

완벽한 해결책 감사합니다 ......... – sunleo

0

내가 래퍼로서 대신 PriorityQueue

을 사용을 너의 목록을 위해. Comparator를 생성 할 때 생성자에 Comparator를 제공하면 목록에 새 요소를 삽입 할 때마다 목록이 정렬 된 채로 유지됩니다.

1

Java 8에서는 listmaps으로 한 줄로 정렬 할 수 있습니다.

list.sort(Comparator.comparing((Map<String,String> mp) -> mp.get("Id"))); 
관련 문제