ArrayList中排名前15位的项目

时间:2017-05-15 09:39:10

标签: java arraylist highest

我正在使用Java -7。我想要一些帮助因为我卡住了,我有一个列表,我一直在添加值但最后我想得到最新的15.列表处理DonateTable类 包含返回long的.getTime()(System.getCurrentMilliseconds)

我希望使用此值来获取最新的前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;
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以将比较器用于data.token类,并使用DonateTable值对其实例进行排序。

getTime()

您可以这样使用此比较器:

public class DonateTableByHighestTimeComparator implements Comparator<DonateTable>{

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

最后,您可以获得排序列表的前15个元素的子列表视图:

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