第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據(jù)變量對自定義 Java 類的數(shù)組列表進行排序

根據(jù)變量對自定義 Java 類的數(shù)組列表進行排序

慕勒3428872 2023-07-28 15:58:14
我有一個自定義 Java 類,其中包含兩個變量:username和score。我正在創(chuàng)建一個 ArrayList,其中包含多個。然后我想根據(jù)它們的值按從低到高的順序?qū)λ鼈冞M行排序score高分班public class Highscore implements ConfigurationSerializable {    String username;    int score;    public Highscore(String username, int score) {        this.username = username;        this.score = score;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public int getScore() {        return score;    }    public void setScore(int score) {        this.score = score;    }    @Override    public Map<String, Object> serialize() {        Map<String, Object> mappedObject = new LinkedHashMap<String, Object>();        mappedObject.put("username", username);        mappedObject.put("score", score);        return mappedObject;    }    public static Highscore deserialize(Map<String, Object> mappedObject) {        return new Highscore((String) mappedObject.get("username"),                (int) mappedObject.get("score"));    }}例如,下面顯示了包含多個 的 ArrayList Highscore。我只想查看score基于從低到高的 ,然后將Highscore' 排序到另一個 ArrayList 中。ArrayList<Highscore> highscores = new ArrayList<>();highscores.add(new Highscore("user1", 10));highscores.add(new Highscore("user2", 0));highscores.add(new Highscore("user3", -15));highscores.add(new Highscore("user4", 30));highscores.add(new Highscore("user5", 5));// Now, sort the highscores based on their 'score'提前致謝。
查看完整描述

3 回答

?
揚帆大魚

TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊

你真的僅限于使用嗎List?

IMOSortedSet更適合您的目標(biāo)。您可以使用TreeSet?注意,TreeSet元素是使用其自然順序或通過在設(shè)置創(chuàng)建時間提供的比較器進行排序的。此外,它還log(n)為基本操作(添加、刪除和包含)提供了有保證的時間成本,因此計算效率非常高。

例如,您可以執(zhí)行以下操作:

SortedSet<Highscore>?highscores?=??
new?TreeSet<>(Comparator.comparingInt(highscore?->?highscore.score));
highscores.add(new?Highscore("user1",?10));
highscores.add(new?Highscore("user2",?0));
highscores.add(new?Highscore("user3",?-15));
highscores.add(new?Highscore("user4",?30));
highscores.add(new?Highscore("user5",?5));

現(xiàn)在highscores包含按升序排序的所有對象score

另外,如果您需要從 獲取List,highscores那么只需:

List<Highscore>?highscoreList?=?new?ArrayList<>(highscores);

這種方法的優(yōu)點是:更好的靈活性和效率,因為SortedSet形成后任何查詢都會花費您O(log n)O(n)時間。如果您使用,List您將始終被迫執(zhí)行排序,這將需要O(n log n).


查看完整回答
反對 回復(fù) 2023-07-28
?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗 獲得超4個贊

public class CustomComparator implements Comparator<Highscore> 
{   public int compare(HighScore h1, HighScore h2) {
      return h1.getScore().compareTo(h2.getScore());
   }
}


查看完整回答
反對 回復(fù) 2023-07-28
?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗 獲得超2個贊

您可以使用比較器,或者讓您的類實現(xiàn)可比較的接口。

查看完整回答
反對 回復(fù) 2023-07-28
  • 3 回答
  • 0 關(guān)注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號