항목 목록이 있고 각 항목에는 가격 필드가 있습니다. 일부 항목의 가격은 999와 같습니다. 정렬 할 때 정렬 방향이 오름차순이든 내림차순이든 항상 가격 == 999 인 요소가 목록의 맨 아래에 있기를 원합니다.
나는 아래 코드를 지 쳤고 낮음에서 높음 (오름차순)으로 정렬하지만 내림차순에는 작동하지 않습니다.
Collections.sort(itemList, new Comparator<Item>() {
@Override
public int compare(Item o1, Item o2) {
if(sort == 4){ // Low to High
return Double.compare(o1.getPrice(), o2.getPrice());
}else{ // High to Low
return Double.compare(o2.getPrice(), o1.getPrice());
}
}
});
오름차순 :
Collections.sort(items, new Comparator<Item>()
{
@Override
public int compare(Item o1, Item o2)
{
if (o1.getPrice() == 999 && o1.getPrice() < o2.getPrice()) {
return 1;
}
if (o2.getPrice() == 999) {
return -1;
}
return Double.compare(o1.getPrice(), o2.getPrice());
}
});
그리고 내림차순 :
Collections.sort(items, Collections.reverseOrder(new Comparator<Item>()
{
@Override
public int compare(Item o1, Item o2)
{
if (o1.getPrice() == 999 || o2.getPrice() == 999) {
return 1;
}
return Double.compare(o1.getPrice(), o2.getPrice());
}
}));
테스트:
List<Item> items = new ArrayList<Item>();
items.add(new Item(10));
items.add(new Item(50));
items.add(new Item(1050));
items.add(new Item(999));
items.add(new Item(40));
items.add(new Item(999));
items.add(new Item(30));
items.add(new Item(1050));
산출:
오름차순
10.0
30.0
40.0
50.0
1050.0
1050.0
999.0
999.0
내림차순
1050.0
1050.0
50.0
40.0
30.0
10.0
999.0
999.0
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다