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