java集合求交集高效算法?
使用Java的jdk自帶的Collection接口中定義的方法就可以了:
boolean retainAll(Collection<?> c);
jdk的實現都是比較高效的,有興趣的話可以自己看下源碼是怎么實現的。
下面給一個參考示例:
//使用如下:public static void main(String[] args) {
List<Integer> listdata1 = new ArrayList<>(Arrays.asList(new Integer[]{1,5,7}));
List<Integer> listdata2 = new ArrayList<>(Arrays.asList(new Integer[]{1,3,5}));
System.out.println("listdata1和listdata2求完交集后listdata1中元素發生改變了,因此boolean值為:"+listdata1.retainAll(listdata2));
System.out.println("listdata1和listdata2求交集結果保存在listdata1中,交集結果如下:"+listdata1);
List<Integer> listdata3 = new ArrayList<>(Arrays.asList(new Integer[]{1,5,7}));
List<Integer> listdata4 = new ArrayList<>(Arrays.asList(new Integer[]{1,5,7}));
System.out.println("listdata3和listdata4求完交集后listdata3中的元素并未改變,因此boolean值為:"+listdata1.retainAll(listdata2));
System.out.println("listdata3和listdata4求交集結果保存在listdata3中,交集結果如下:"+listdata3);
}