【发布时间】:2016-09-19 13:58:47
【问题描述】:
我有两个列表:
List<String> firstList = new LinkedList<String>();
List<String> secondList = new LinkedList<String>();
我想知道一个列表的每个元素是否都包含在另一个列表中。 一个可能的解决方案是:
public boolean function(List<String> first, List<String> second)
{
first = firstList;
second = secondList
for (String item : firstList)
{
for (String elem : secondList)
{
if(elem.compareTo(item)!=0)
return false;
}
}
return true;
}
正如我们所见,时间是二次方的。有没有更好的办法?
【问题讨论】:
-
为什么不直接使用
containsAll? -
firstList 和
containslist 方法可以使用一个foreach。 -
@resueman 因为
constainsAll使用线性搜索。 -
您的方法通常会在应该返回
true时返回false,因为您返回false太早了。
标签: java list time-complexity