public class mni { public static void main(String []args) { int []a={1,2,3,4}; int []b={4,3,2,1}; int k=0; int i,j; int c[]=new int[100]; for(i=0;i<a.length;i++) c[k++]=a[i]; k=i; for(i=0;i<a.length;i++) { for(j=0;j<b.length;j++) if(b[j]!=a[i]) { c[k++]=b[j]; continue; } } System.out.println("并集:"+c[k]); }} 这样写错在那里了啊?谢谢!
for (i = 0; i < b.length; i++) { for (j = 0; j < a.length; j++) if (b[i] == a[j]) { break; } if (j==a.length) c[k++] = b[i]; } 如果不考虑性能,利用map的特性。 Map<Integer,Integer> map=new HashMap<Integer,Integer>(); for(int i:a) map.put(i, i); for(int i:b) map.put(i, i); for(Integer i:map.keySet()) System.out.println(i); 如果考虑性能,你应该先把元素少那个的用快速算法排序,然后顺序遍历多那个,用二分法进行查找少的那个,没有的话就给加到末尾!但是每查找的长度始终为少的那个集合的原始长度。
addAll 是合集
retainAll 是交集
public class mni
{
public static void main(String []args)
{
int []a={1,2,3,4};
int []b={4,3,2,1};
int k=0;
int i,j;
int c[]=new int[100];
for(i=0;i<a.length;i++)
c[k++]=a[i];
k=i;
for(i=0;i<a.length;i++)
{
for(j=0;j<b.length;j++)
if(b[j]!=a[i])
{
c[k++]=b[j];
continue;
}
}
System.out.println("并集:"+c[k]);
}}
这样写错在那里了啊?谢谢!
for (j = 0; j < a.length; j++)
if (b[i] == a[j]) {
break;
}
if (j==a.length)
c[k++] = b[i];
}
如果不考虑性能,利用map的特性。
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i:a)
map.put(i, i);
for(int i:b)
map.put(i, i);
for(Integer i:map.keySet())
System.out.println(i);
如果考虑性能,你应该先把元素少那个的用快速算法排序,然后顺序遍历多那个,用二分法进行查找少的那个,没有的话就给加到末尾!但是每查找的长度始终为少的那个集合的原始长度。