首页 新闻 会员 周边 捐助

java ArrayList数组是否有相同元素

0
悬赏园豆:60 [已解决问题] 解决于 2012-01-15 11:23

 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数组中的交集!

平越江南的主页 平越江南 | 初学一级 | 园豆:98
提问于:2012-01-01 12:31
< >
分享
最佳答案
0
收获园豆:60
artwl | 专家六级 |园豆:16736 | 2012-01-01 15:16

完整代码:

    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;
}
artwl | 园豆:16736 (专家六级) | 2012-01-01 15:47
其他回答(4)
0

如果用linq的话,很好解决。

java的话,自己写个方法来判断吧。

chenping2008 | 园豆:9836 (大侠五级) | 2012-01-01 18:59
0

上面的方法只能用在特定的情况,这是楼主要的答案吗?

wofengletian | 园豆:172 (初学一级) | 2012-01-07 14:16

不是,我想要的是求任何两个ArrayList数组的交集!

支持(0) 反对(0) 平越江南 | 园豆:98 (初学一级) | 2012-01-07 15:48

写的不好请指点

 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 }

 

支持(0) 反对(0) wofengletian | 园豆:172 (初学一级) | 2012-01-09 13:00
0

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;

 

}

程彬 | 园豆:205 (菜鸟二级) | 2012-01-12 11:53

不知下面程序能不能帮到你。

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);
    }
}
支持(1) 反对(0) SangBillLee | 园豆:212 (菜鸟二级) | 2012-05-29 18:19
0

建议多先多熟悉研究java的collections相关api

@李城 | 园豆:263 (菜鸟二级) | 2014-06-20 16:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册