亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

將 SortedSet 轉換為 TreeMap 或 ImmutableMap,并將鍵作為迭代器位置

將 SortedSet 轉換為 TreeMap 或 ImmutableMap,并將鍵作為迭代器位置

叮當貓咪 2023-12-30 15:59:35
我有一個SortedSet<MyObject>并且MyObject有一些compareTo邏輯Date。class MyObject {   .. many fields   private Date date;   @Override    public int compareTo(MyObject object) {    .. logic here..    }    }我想將其轉換SortedSet為 aTreeMap或 Guava 的ImmutableSortedMap鍵作為 中元素的位置SortedSet。例如0 -> MyObject11 -> MyObject2...and so on我可以迭代并手動SortedSet將元素放入新元素中TreeMap,但我想知道是否有更干凈的方法可以通過 Streams 或 Guava 庫/Collection 庫來完成。
查看完整描述

3 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

只要用循環來做就可以了。


TreeMap<Integer, MyClass> map = new TreeMap<>();

for (MyClass myClass : sortedSet) {

? map.put(map.size(), myClass);

}

查看完整回答
反對 回復 2023-12-30
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

使用流外部的有效最終計數器變量。


由于插入是按順序進行的,因此您不需要最終的映射是TreeMap; 它可以更快LinkedHashMap,其迭代順序與插入相同。


AtomicInteger counter = new AtomicInteger();

Map<Integer, MyClass> map = sortedSet.stream()

  .collect(Collectors.toMap(

    x -> counter.getAndIncrement(),

    x -> x,

    (a, b) -> a,

    LinkedHashMap::new));

如果您迫切需要一個TreeMap,請在上面的代碼中替換LinkedHashMap為。TreeMap


查看完整回答
反對 回復 2023-12-30
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

您的 TreeMap 想法不正是數組嗎?

MyObject[] myObjects = sortedMap.toArray();


查看完整回答
反對 回復 2023-12-30
  • 3 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號