第一篇文章,我對Java(以及一般編程)非常陌生!基於地圖中TreeSet中值的範圍返回鍵
我想了解如何操作地圖,當他們包含其他集合。我試圖編寫代碼來存儲名稱作爲鍵的值,這些值是映射中的整數集。然後我希望能夠返回任何具有落在給定範圍內的元素的值的鍵。
Map<String, Set<Integer>> index = new TreeMap<>();
Set<Integer> numbers = new TreeSet<>;
numbers.add(80);
numbers.add(90);
numbers.add(100);
index.put("Adam", numbers);
numbers = new TreeSet<>();
numbers.add(30);
numbers.add(40);
numbers.add(50);
index.put("Eve", numbers);
我現在有與鍵 「亞當」 和值的條目[80,90,100],並用鍵 「EVE」 和值[30,40,50]另一條目的地圖。至少我覺得我有!
我現在想要能夠返回任何鍵落在給定範圍內的鍵的名稱。
例如,如果範圍是25到50,則返回將是「Eve」。 如果範圍是50到85,則回報將是「亞當」和「夏娃」。
我以爲containsValue()可能工作,但沒有(因爲Set?)。
任何指導,將不勝感激。
不知道任何關於您的問題域: 你認爲逆 - 使用數字作爲鍵,和一組名稱爲您的樹形圖中值? 鑑於您的描述,這似乎適合您使用它的方式。 – fspinnenhirn
謝謝,你的問題剛剛突出了另一個問題。可能有重複的值,所以我不能做你的建議,但我也不能使用TreeSet。我想我需要一個ArrayList? – GATDev
如果你想避免重複,你會使用Set而不是List;並且只有在需要對它進行排序(通過可比較的東西)時,纔會使用基於樹的集合實現(TreeMap,TreeSet)。 一般情況下,首先確定是否需要一個List,Set和地圖,然後看看常見的ArrayList,HashMap的或HashSet的就夠了。只有他們不這樣做,請考慮使用基於樹或LinkedList的集合實現。 – fspinnenhirn