2011-07-18 146 views
0

我有一个下面的函数二元语法:功能匹配

public static ArrayList<String> matchLists(ArrayList<String> ar1, ArrayList<String> ar2, ArrayList<String> ar3) { 

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

    for (int i = 0; i < ar1.size(); i++) { 
    for (int j = 0; j < ar2.size(); j++) { 
     for (int k = 0; k < ar3.size(); k++) { 

     String[] s1 = ar1.get(i).split("\\s"); 
     String[] s2 = ar2.get(j).split("\\s"); 
     String[] s3 = ar3.get(k).split("\\s"); 

     if (s1[1].equals(s2[0]) && s2[1].equals(s3[0])) { 
      result.add(s1[0] + " " + s2[0] + " " + s3[0] + " " + s3[1]); 
     } 
     } 
    } 
    } 
    return result; 
}  

它输入双字母组3周的ArrayList并对它们进行比较。如果第一个数组列表中的第二个单词与第二个数组列表中的单词匹配,则他们创建一个句子。

例子:

1st Array List: he ate 
2nd Array List: ate two 
3rd Array List: two apples 

创建一个句子,他吃了两个苹果。但是这个函数仅限于3个ArrayLists。我想使它更加健壮,因此它会接受一个2d的ArrayList的字符串,其中每个ArrayList都是一个bigrams的集合,并且将检查可用的bigrams中所有可能的匹配。有人可以帮助我吗?

+1

作业?...... – Bozho

+0

它不是一个家庭作业。只是在一些bigram匹配程序上工作 – Radek

回答

0

字符串的2D ArrayList应该是ArrayList<ArrayList<String>>。那么你只需要改变你的循环来遍历所有其他的ArrayLists。我不会告诉你如何做到这一点(因为这看起来非常像家庭作业),但你应该能够很容易地弄清楚:)