我有一个名为Cards的对象的HashMap。关键是卡,而值是一个整数,表示卡在“卡座”中的数量。每回合,我需要根据剩余的卡数返回一个有序列表。我该怎么做呢?到目前为止,这是我的代码:
import java.util.Collections;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class Field {
public Field() {
Map<Card,Integer> backingMap = new HashMap<Card,Integer>();
}
public void buyCardFromField(Card c) {
if(backingMap.get(c) != 0) {
backingMap.put(c,backingMag.get(c) - 1);
}
else {
throw new RunTimeException("This card is no longer available!");
}
}
public List getCardsInZone() {
List<Card> cardList = new ArrayList();
for(Card element: backingMap.keySet()) {
cardList.add(element);
//Some method to sort the arrayList? I'm not sure what to do here?//
}
return cardList;
}
}
答案 0 :(得分:1)
您可以为Card类创建一个比较器类,然后调用Collections.sort(arraylist).
答案 1 :(得分:1)
最简单的方法可能是从hashmap中获取条目并对其进行排序。使用条目集的好处是您的卡片对象不需要具有计数属性。
Set<Entry<Card, Integer>> entries = backingMap.entrySet();
ArrayList<Entry<Card, Integer> entryList = new ArrayList();
entryList.addAll(entries);
Lists.sort(entryList, myNewComparator);
return entryList;
当然,您需要一个比较器,它根据value属性按降序对Entries进行排序。