所以我有一個FlashCards的大LinkedList,1000卡,用於flashcard應用程序。有些以前從未見過,有些已經被看到過,並且多次猜測正確或不正確。使用比較器或多個比較器進行優先級排序?
有了這麼多的卡片,我想要那些我從來沒有注意到的名單上的第一個,其次是那些比他們被釘了更多的錯過。
理想情況下,這將是一般規則,並不總是如此;仍然會有一張我以前見過的偶爾卡片,但其中大多數卡片是看不見的。
另外,現在我正在使用Collections.shuffle(),在上述標準中,我仍然希望卡片隨機出現。
我剛熟了這個比較:
public class TimesSeenComparator implements Comparator<Card> {
public int compare(Card one, Card two){
boolean oneNeverSeen = false;
boolean twoNeverSeen = false;
if(one.getMissed() + one.getMade() == 0){ oneNeverSeen = true; }
if(two.getMissed() + two.getMade() == 0){ twoNeverSeen = true; }
if(oneNeverSeen && twoNeverSeen){ return 0; }
if(one.getMissed() > two.getMissed()){
return 1;
} else if(one.getMissed() == two.getMissed()){
return 0;
} else{
return -1;
}
}
}
它非常艱難,我知道!任何幫助表示讚賞。
編輯: 最後一個比較合作伙伴視其合同,我顯然是想在一個比較器中做太多。如果您有幾個比較器,然後執行Collections.sort(x,comp1),它將如何工作; Collections.sort(X,COMP2); Collections.sort(X,COMP3); ?
public class TimesSeenComparator implements Comparator<Card> {
public int compare(Card one, Card two){
boolean oneNeverSeen = false;
boolean twoNeverSeen = false;
if(one.getMissed() + one.getMade() == 0){ oneNeverSeen = true; }
if(two.getMissed() + two.getMade() == 0){ twoNeverSeen = true; }
if(oneNeverSeen && !twoNeverSeen){
return 1;
} else if(oneNeverSeen && twoNeverSeen){
return 0;
} else {
return -1;
}
}
}
能否請你澄清究竟是什麼你問題是? – MyStackRunnethOver
也許分裂卡插入看見和看不見的清單和隨機排序兩種。然後,通過生成均勻分佈的數字填充最終列表,並選擇您希望它成爲看到的次數的百分比。就像'r> 0.95'一樣。 – ChiefTwoPencils
那是一個好主意,我給它一個鏡頭。 – madmax