static List<String> common(String[] A, String[] B){
Collection<String> listone = new ArrayList<String>(Arrays.asList(A));
List<String> sorted = new ArrayList<String>(Arrays.asList(B));
sorted.retainAll(listone);
return sorted;
}
我已經試過尋找API的源代碼;但我找不到任何的list.retainAll方法。什麼是最壞的情況大哦使用list.retainAll
但是我確信它是O(n)。那是對的嗎?
對於ArrayList,'e.remove()'也是線性的。我認爲這取決於「被保留者」的類型以及指定的藏品。最好的情況是線性的,例如'LinkedList' retainee和一個指定的'HashSet'。 – msandiford 2015-02-11 01:53:26
@msandiford感謝您的好評!我添加了更多信息來解釋這一點。 – dasblinkenlight 2015-02-11 02:05:15
@dasblinkenlight:'ArrayList'有它自己的非默認'retainAll'實現,它運行在O(NM)中。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList.retainAll%28java.util.Collection%29 – 2015-02-11 02:14:12