如何比较java </string>中ArrayList <string>中的值

时间:2011-08-10 05:50:48

标签: arraylist

我有两个ArrayList:

ArrayList<String> input = new ArrayList<String>();
ArrayList<String> output = new ArrayList<String>();

input contains these data:
input= {a b c d, a g f r, d e a b, k c s x, f g h s}
output contains:
output = {a b c f, g f x r, d e f g}

我想比较这些列表的价值,例如: input(0)包含a,b,c和d,而output(0)包含a,b,c和f。如果我们比较,我们可以得到a,b和c是相似的值意味着两个数组都有3个相似的值。 / p>

Iteration<String> itr = input.iterator();

while(itr.hasNext()) {

    //should i do this to get each value in each row?
    for(String s : input) {
        StringTokenizer b = new StringTokenizer(s," ");
        String[] temp_input = new String[n];
        int i = 0;

        while(b.hasMoreTokens()) {
            temp_input[i] = b.nextToken();
        }
    }
}

所以结果应该是输入和输出之间相似值的数量。 提前谢谢..

2 个答案:

答案 0 :(得分:0)

我是否可以假设数组已排序,您只对比较input[i]output[i]感兴趣?

如果是这样,有一个简单的解决方案:

int counter = 0;
int length = Math.min(input.size(), output.size());
String[] data = null;
for (int i = 0; i < length; ++i ) {
    data = input.get(i).split(" "); // division by space
    for(String value : data) {
        if ( output.get(0).contains(value) ) ++counter;
    }    
}

我应该提一下,这个解决方案并不是最佳性能,但根据您的问题规范,它可能是合适的。

答案 1 :(得分:0)

这是一个想法:

     for(String string1: arrayOfStrings1)
     {
         for(String string2: arrayOfStrings2)
         {
             if(string1.equals(string2))
             {
                  //increase counter or do whatever you would like here...
             }
         }
     }