我正在使用java 1.6。 我有一組項目,每個項目都有一個名稱和一組組件。每個組件也有一個名稱。列表中列表的查找算法優於O(n2)複雜性
Set<Item>
Class Item
String name
Set<Component>
Class Component
String name
我現在的任務是編寫一個輸入:項目名稱+組件名稱和輸出的方法:該對是否存在於項目列表中。
public boolean hasItemComponentPair(String itemName, String componentName)
{
for(Item item : getItems())
{
if (item.getName() == itemName)
{
for(Component component : item.getComponents())
{
if (component.getName() == componentName)
{
return true;
}
}
}
}
return false;
}
最簡單的方法是簡單地逐個查看集合中的元素,如果找到匹配則斷開。這種方法適用於小集合。
我的物品組通常在5到20個物品之間,並且組件集合大致相同。所以有25到400個獨特的項目組件對。這種數量的配對似乎太大,以至於天真算法效率不高,特別是如果該方法被多次調用。但是我也認爲分而治之的技巧對於給定數量的元素來說太冗長了。
對於這個問題,通常使用哪些數據結構和算法,記住給定集的大小?
什麼是Set- 和Set
的比較器? –
yinqiwen
嚴格地說,使用'Set',我不認爲有雙重循環的替代方案,因爲你必須迭代元素。即使有400種可能性,它也會非常快。 –