자바 실체 집합 정렬 에 대해 세 가지 방법 을 정 리 했 습 니 다.첫 번 째 는 원생 이 지원 하 는 Comparator 를 통 해 정렬 하 는 것 입 니 다.두 번 째 는 자바 8 의 Lambda 표현 식 을 통 해 정렬 하 는 것 입 니 다.세 번 째 는 apache-comon 의 공구 꾸러미 를 사용 하여 정렬 하 는 것 입 니 다.테스트 를 통 해 원 하 는 효 과 를 얻 을 수 있 습 니 다.세 번 째 코드 는 가 독성,용이 성 이 강하 기 때문에 세 번 째 코드 를 추천 합 니 다.
세 번 째 순 서 는 아파 치-common 의 beanutils,collections 패 키 지 를 도입 해 야 합 니 다.maven 은 다음 과 같 습 니 다.
<dependency >
<groupId > commons-collectionsgroupId >
<artifactId > commons-collectionsartifactId >
<version > 3.2.2version >
dependency >
<dependency >
<groupId > commons-beanutilsgroupId >
<artifactId > commons-beanutilsartifactId >
<version > 1.9.3version >
dependency >
코드
public class TestCollections {
private ListString, Object >> getDataList() {
Map<String , Object > map1 = new HashMap <>(3 );
map1.put("id" , 2 );
map1.put("name" , " " );
Map<String , Object > map2 = new HashMap <>(3 );
map2.put("id" , 1 );
map2.put("name" , " " );
Map<String , Object > map3 = new HashMap <>(3 );
map3.put("id" , 3 );
map3.put("name" , " " );
ListString, Object >> dataList = new ArrayList<>();
dataList.add (map1);
dataList.add (map2);
dataList.add (map3);
return dataList;
}
@Test
public void sort () {
ListString, Object >> dataList = getDataList();
System.out.println (" :" + dataList);
Collections.sort (dataList, new Comparator() {
@Override
public int compare(Map o1, Map o2) {
int id1 = Integer.parseInt(o1.get ("id" ).toString());
int id2 = Integer.parseInt(o2.get ("id" ).toString());
return id2 - id1;
}
});
System.out.println ("Collections :" + dataList);
dataList = getDataList();
dataList.sort ((Map o1, Map o2) -> {
int id1 = Integer.parseInt(o1.get ("id" ).toString());
int id2 = Integer.parseInt(o2.get ("id" ).toString());
return id1 - id2;
});
System.out.println ("Lambda :" + dataList);
dataList = getDataList();
Comparator mycmp1 = ComparableComparator.getInstance();
mycmp1 = ComparatorUtils.reversedComparator(mycmp1);
ArrayList<Object > sortFields = new ArrayList<>();
sortFields.add (new BeanComparator("id" , mycmp1));
ComparatorChain multiSort = new ComparatorChain(sortFields);
Collections.sort (dataList, multiSort);
System.out.println (" :" + dataList);
}
}
실행 결과
:[{name = , id =2 }, {name = , id =1 }, {name = , id =3 }]
Collections :[{name = , id =3 }, {name = , id =2 }, {name = , id =1 }]
Lambda :[{name = , id =1 }, {name = , id =2 }, {name = , id =3 }]
:[{name = , id =3 }, {name = , id =2 }, {name = , id =1 }]
13 시간 전 발표
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?
In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%.
but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.