java中两个字符串数组列表的交集

时间:2015-11-29 04:19:22

标签: java arraylist

我有两个字符串,其中都有一组数字 我希望交集是他们之间共同的数字。 所有这些都是字符串

 ArrayList<String> list1 = new ArrayList<String>();

 list1.add(temp1.get(0));

 ArrayList<String> list2 = new ArrayList<String>();

list2.add(temp1.get(1));

 ArrayList<String> intersection = new ArrayList<String>(list1);

intersection.retainAll(list2);

 System.out.println  ( "Charstic sets Intersection  :::  "+intersection );

其中:

temp1 is : [[1, 2, 6], [1, 3, 5] ]

temp1.get(0) is :[1, 2, 6]

temp1.get(1) is :[1, 3, 5]

我想要得到以下内容:

[1]

但我得到一个空集:

[] 

1 个答案:

答案 0 :(得分:0)

我确定问题在于temp1是 ArrayList of Integers ArrayList of strings ,这就是为什么你的十字路口是空的。因此,首先将字符串转换为整数的ArrayList可能是个好主意。

我写了一个函数来做一个小例子(称为&#34; test.java&#34;):基本上你用逗号分割你的字符串并将你的值转换成整数,然后你可以调用ArrayList&#39 ; s intersection():

import java.util.ArrayList;
public class test {
    private static ArrayList<Integer> stringToArrayList(String s){ 
        ArrayList<Integer> ans = new ArrayList<Integer>();
        for (String t : s.split(",")) {
            ans.add(Integer.parseInt(t));
        }
        return ans;
    }

    public static void main(String[] args) {
        ArrayList<Integer> t1 = stringToArrayList("1,2,6");
        ArrayList<Integer> t2 = stringToArrayList("1,3,5");

        ArrayList<Integer> intersection = new ArrayList<Integer>(t1);
        intersection.retainAll(t2);
        System.out.println  ( "Charstic sets Intersection  :::  "+intersection );

    }
};

输出:

Charstic sets Intersection  :::  [1]

如果代码不清楚或者这是否适合您,请告诉我们:)