簡體   English   中英

我正在嘗試獲取集合中的最后一個date元素,但是它一直返回第一個?

[英]I am trying to get the last date element in a set, however It keeps returning the first one?

下面是我的代碼,我獲取了Map的鍵,然后遍歷它們以獲取最后一個日期,但是它似乎沒有得到最后一個日期。 這行上的值Set<Date> keys = date.keySet(); 是10.31.18和11.17.18。 我希望lastDate等於11.17.18,但等於10.31.18。 任何想法我在這里做錯了。

Map<Date, List<Integer>> date = date(dates, noPupils);
                Set<Date> keys = date.keySet();
                for (Iterator<Date> it = keys.iterator(); it.hasNext();) {
                    while (it.hasNext()) {
                        Date lastDate = it.next();

看來您遵循了這個答案 它已經說:

Collection不一定是有序集合

在您的情況下,它不起作用, 因為

映射的順序定義為映射的集合視圖上的迭代器返回其元素的順序。 一些地圖實現(例如TreeMap類)對其順序做出特定的保證。 其他的(例如HashMap類)則沒有。

顯然, Map date不能保證特定的訂單。 這也適用於Set<Date> keys = date.keySet() 因為這

返回此映射中包含的鍵的Set視圖...由映射支持...

但是解決方案很簡單,可以立即使用:

Date lastDate = Collections.max(keys);

由於Date實現Comparable因此可以立即工作。

您正在使用LinkedHashMap還是HashMap?

HashMap沒有排序的Map。 LinkedHashMap是有序地圖,保留插入順序。

但是我認為您應該使用TreeSet來對日期進行排序。 因此,您無需關心哪種Map :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM