昨天面试有一道题笔试题是这样的:有两个一千万的String字符串数组,如何用最好的方式找出他们之间的交集。
我回答说一个个用循环比较,我也知道这不是最佳的方式,但是我想不到别的方式了,请大家帮忙教我一下如何解决这个问题。
第1个回答 2010-04-15
用个map,key为字符串,value为出现次数,
分别循环两个字符串数组,放入map中,如果有了就value+1,没有就放进去,value=1,
最后遍历map,value>1的就是交集。
分别循环两个字符串数组,放入map中,如果有了就value+1,没有就放进去,value=1,
最后遍历map,value>1的就是交集。
第2个回答 2010-04-15
两个 String字符串数组 a1,a2
List<String> list = new ArrayList(Arrays.asList(a1)); list.retainAll(Arrays.asList(a2)); // list 中的就是交集了本回答被提问者采纳
List<String> list = new ArrayList(Arrays.asList(a1)); list.retainAll(Arrays.asList(a2)); // list 中的就是交集了本回答被提问者采纳
第3个回答 2010-04-15
最好的方法是list.retainAll(Collection) 方法 不过这个方法的内部源码 也是用循环实现的 所以 从代码长度上看用这个是短些 但实质还是一样的
第4个回答 2010-04-15
list的retainAll()方法