2017-07-31 34 views
-2

嗨,我想從響應中獲得前兩個最大值。我將這些值存儲在自定義列表中。我不知道如何從列表中獲取值。如何從java中的自定義列表中找到前N個最高優先級值?

JSON響應:

{"elements": [ 
    { 
     "priority": 1 
    }, 
    { 
     "priority": 16 
    }, 
    { 
     "priority": 4 
    }, 
    { 
     "priority": 1 
    }] 
} 
+0

使用二叉搜索樹。 –

+5

你忘了粘貼你*首先寫的代碼來試圖解決這個問題。根據你的理解,現在就去做並解釋它是如何不起作用的。 – Kon

+0

我建議你關掉你的電腦。拿一張紙和一支鉛筆,然後用文字描述你需要採取的步驟來解決這個問題。起初,不要擔心Java語法。只需說明解決方案的步驟。 –

回答

1

首先,您需要將您的字符串解析到一個數組:

JSONArray elements = new JSONObject(your_json_string).getJSONArray("elements"); 
Integer[] priorities = new Integer[elements.length()]; 

for (int i = 0; i < elements.length(); i++) { 
    priorities[i] = elements.getJSONObject(i).getInt("priority"); 
} 

接下來,您需要將數組從最高到最低

Arrays.sort(priorities, Collections.reverseOrder()); 
排序

現在您可以從0 - > N查找最高的N值N

for (int i = 0; i < N; i++){ 
    //Do something with priorities[i] 
} 
相關問題