2017-05-15 13 views
0

Java -7を使用しています。私はいくつかの助けが必要なので、私はいつも値を追加するリストを持っているが、最終的に私は最新の15を取得したい。リストはDonateTableクラスを処理する .getTime()は長い(System.getCurrentMilliseconds)ArrayListから上位​​15個のアイテム

この値を使用して最新のトップ15を取得します。したがって、より高いms =最新の値。しかし、どのようにidk。これは私のコード

public ArrayList<DonateTable> getLog(int objectId) 
{ 
    ArrayList<DonateTable> data = new ArrayList<>(); 

    for (DonateTable dt : list) 
     if (dt.getObjectId() == objectId) 
      data.add(dt); 

    return data; 
} 

public static class DonateTable 
    { 
     int _objectId = 0; 
     String _service = ""; 
     long _time, _points = 0; 

     public DonateTable(int ObjectId, String service, long time, long points) 
     { 
      _objectId = ObjectId; 
      _service = service; 
      _time = time; 
      _points = points; 
     } 

     public int getObjectId() 
     { 
      return _objectId; 
     } 

     public String getService() 
     { 
      return _service; 
     } 

     public long getTime() 
     { 
      return _time; 
     } 

     public long getPoints() 
     { 
      return _points; 
     } 
    } 

答えて

0

あなたはDonateTableクラスのコンパレータを使用して、それのインスタンスをソートするgetTime()値を使用することができます。

public class DonateTableByHighestTimeComparator implements Comparator<DonateTable>{ 

     public int compare(DonateTable o1, DonateTable o2){ 
     return - Long.compare(o1.getTime(), o2.getTime()); 
     } 
    } 

あなたは、このように、このコンパレータを使用することができます。

List<DonateTable> data = new ArrayList<>(); 
... 
Collections.sort(data, new DonateTableByHighestTimeComparator()); 

そして最後に、あなたは、ソートされたリストの最初の15個の要素のサブリストビューを取得することができます

List<DonateTable> top15Elements = data.subList(0,15); 
+0

とそれを実装する方法、私は混乱しています。 urクラスのように、単純に2つの要素から取った値を比較しますが、すべての要素でどのように動作し、上位15を与えるのですか? psのお返事tho – magneto30

+0

あなたは 'Collections.sort(List リスト、Comparator c)'静的メソッドにコンパレータとリストを提供します。 – davidxxx

+0

ノップそれは私が作る "ゲーム"で動作しませんでした。 https://pastebin.com/Vpp0QbaX – magneto30

関連する問題