ArrayList a1{1,2,3,4,5,6}
ArrayList a2{1,2,3,4}
我比较a1与a2发现有相同的元素1,2,3,4
现在我想把1 2 3 4放在ArrayList a3
我该怎么办?请大家帮一下忙!
求任意两个ArrayList数组中的交集!
完整代码:
public static void main(String[] args) {
ArrayList<Integer> a1 = new ArrayList<Integer>();
ArrayList<Integer> a2 = new ArrayList<Integer>();
for( int i=1;i<7;i++ )
{
if(i<5)
{
a2.add(i);
}
a1.add(i);
}
ArrayList<Integer> a3=GetSame(a1,a2);
for(int i=0;i<a3.size();i++)
{
System.out.println(a3.get(i));
}
}
public static ArrayList<Integer> GetSame(ArrayList<Integer> a1,ArrayList<Integer> a2){
ArrayList<Integer> a3=new ArrayList<Integer>();
a3.addAll(a1);
a3.retainAll(a2);
return a3;
}
如果用linq的话,很好解决。
java的话,自己写个方法来判断吧。
上面的方法只能用在特定的情况,这是楼主要的答案吗?
不是,我想要的是求任何两个ArrayList数组的交集!
写的不好请指点
1 public static ArrayList clc(ArrayList a,ArrayList b){
2 ArrayList<Integer> c = new ArrayList<Integer> ();
3 Map<Integer, Integer> maps = new HashMap<Integer, Integer>();
4 for(int i=0;i<b.size();i++){
5 maps.put( (Integer) b.get(i), 1);
6 }
7
8 for(int j=0;j<a.size();j++){
9 if(maps.containsKey(a.get(j))){
10 c.add((Integer) a.get(j));
11 }
12 }
13 return c;
14 }
public static ArrayList innerJoin(List a,List b){
Iterator ait=a.iterator();
List returnList=new ArrayList();
while(ait.hasNext()){
Object aitem=ait.next();
if(b.contains(aitem)){ //求交集
returnList.add(aitem);
}
return returnList;
}
}
不知下面程序能不能帮到你。
public class TestArrayList { public static void main(String[] args) { //初始化a1,a2,a3 ArrayList<Integer> a1 = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6)); ArrayList<Integer> a2 = new ArrayList<Integer>(Arrays.asList(1,2,3,4)); ArrayList<Integer> a3 = new ArrayList<Integer>(); //把a1的元素全加到a3里 a3.addAll(a1); //把a2,a3的共同元素保存到a3 a3.retainAll(a2); System.out.println(a3); } }
建议多先多熟悉研究java的collections相关api