正如問題評論中所述,對於下一個用戶:我認爲最好的解決方案是將對應關係放在Hashtable中。
Hashtable<String, Drawable> map=new Hashtable<>(SIZE);
//iterates for each couple key/name - drawable you need
map.put(KEY, drawable);
//then you can access to drawables easily with the name :
Drawable d=map.get(KEY);
所有hashTable中的成本都與hastable數據修改:添加元素,修改元素(我甚至不能確定的更新),刪除元素。因爲你的散列似乎是固定的,所以沒有任何成本(除了內存使用)並且訪問幾乎是[恆定的,而不是線性大小]直接,就像你給出陣列中的位置一樣。
所以我認爲這是您需要的解決方案。 你可以繪製一個有多個鍵的鍵,這不是問題。然而,一個關鍵導致總是一個可繪製的。
請記住,map.put();沒有重複值(這裏可以繪製),除非它是一個原始數據。因此,對drawable進行的任何更改(如果發生某些更改)將應用於具有相同drawable的所有鍵。這可能不是問題,但是您必須知道,如果您使用散列表進行其他用法。
編輯: 由於您需要爲每個片段使用這個散列表,因此您需要創建一個抽象類,每個片段都將從其繼承,並將此hastable聲明爲該類中的受保護對象。因此,每個子類將能夠得到它。你也可以將這個散列表設置爲私有的,並實現一個函數「Drawable getDrawableFromName(String name)」,從hastable返回drawable。
我強烈建議你有一個抽象的主要子類爲你的活動,如果你需要在活動中做這樣的事情。
爲什麼你不想使用數組?我不確定有沒有一種方法可以做到這一點,沒有數組或手動編碼的東西看起來像數組。也許使用hashmap?你也可以使用SQLite來存儲它,但最後它就像一個數組,並且這將更好地使用數組... – Feuby
因爲有很多圖像,我存儲在drawable中,如果我將它存儲在一個數組中我必須爲每個名稱循環數組,並增加執行時間。 –
然後使用散列表(不是hashmap抱歉),它會以低成本直接從名稱給你繪圖 – Feuby