在Java中,我創建了一組對象(相同類型),其中每個對象都包含一個名爲name
的字符串字段。集合,對象和它們的全部都是在構造函數中生成的,永遠不會被更改。我希望能夠輕鬆找到給定name
的對象。使用給定名稱在不變列表中查找元素
class Program {
final Collection<Foo> foos;
Program() {
foos = new HashSet<>(); // Note: I'm willing to use another type of collection
foos.add(new Foo("First", 7));
foos.add(new Foo("Qwerty", 4));
}
get(String name) {
// how?
}
}
class Foo {
final String name;
int size;
Foo(String name, int size) {
this.name = name;
this.size = size;
}
}
我能想到的獲得富與給定name
的幾種方法。我可以製作一個Map<String,Foo>
,但是這似乎使用了比真正需要更多的內存(每個字符串都必須在內存中複製,並且存在全新的數據結構)。或者,我可以做一個簡單的foreach循環,但這是O(n)效率,我正在尋找O(1)或接近它。
請注意,'HashSet'在幕後使用了'HashMap'。 –
使用'Map'而不是'Set'。 @SotiriosDelimanolis任何'Set'都在幕後使用'Map'。 –
'Set's並不是真正用於檢索。 –