[英]java multiple string array compare
我已经从文件中读取了9个字符串数组。 数组(主)中的一个将分别与其他数组进行比较。 数组的长度不同。 我编写了一个match函数,检查每个新闻项是否等于其他数组项。 如果发生匹配,则写入数组的标签。 如果不匹配,则打印“ / o”。 问题是我为每个数组有八个功能,我想降低复杂度,并在一个功能中做到这一点。 我怎么能做到呢? 我的示例代码是:该示例仅用于arr1,因此我需要为其他数组编写7次。
String[] main = "g, a1, c1, r,..."
String[] arr1 = "a1, b1, c1"
String[] arr2 = "e, r, g"
String[] arr3 = "g, m, l, x"
String[] arr4 = "s, b, l"
String[] arr5 = "a, f, o, t, e"
String[] arr5 = "g, h, j"
String[] arr5 = "q, b"
String[] arr5 = "z, v, n"
for (int j = 0; j < main.length; j++) {
for (int i = 0; i < arr1.length; i++){
int varLength = arr1[i].length();
for (int e = 3; e < varLength; e++) { // substring is done by 3
String substr1 = arr1[i].substring(0, e)
if (substr1.equalsIgnoreCase(main[j]))
{
main[j] = main[j] + "/arr1";
}
}
}
}
Expected Output :
arr1 = "g/O, a1/arr1, c1/arr1, r/O"
arr2 = "e/O, r/arr2, g/arr2 "
arr3 = "g/arr3, m/O, l/O, x/O" And goes like this for the other arrays
只需循环所有数组即可:
// Create an array containing your 7 arrays
String[][] allArrays = new String[][] {arr1, arr2, arr3, arr4, arr5, arr6, arr7};
int counter = 1;
for(String[] arr : allArrays) {
for (int j = 0; j < main.length; j++) {
for (int i = 0; i < arr.length; i++){
// do as before
main[j] = main[j] + "/arr" + counter++;
// ...
}
}
}
一种实现方法是
public static matcher(String[] main, String[] toMatch, String arrayName) {
for(String curr : main) {
String toAppend = "/0";
for(String matchAgains : toMatch) {
for (int e = 3; e < varLength; e++) { // substring is done by 3
String substr1 = curr.substring(0, e)
if(substr1.equalsIgnoreCase(matchAgainst)) {
toAppend = arrayName;
}
}
}
System.out.println(main+"/"+toAppend);
}
}
使用这样的函数,您可以像matcher(main,arr1,"arr1");
这样调用matcher(main,arr1,"arr1");
否则,如果您要寻找完全匹配项(而不仅仅是子字符串),则可以在可能的地方使用集合(这是我最初的想法,但我误解了这个问题)
public static matcher(Set<String> main, Set<String> toMatch, String arrayName) {
for(String curr : main) {
String toAppend = "/0";
if(toMatch.contains(main)) {
toAppend=arrayName;
}
System.out.println(main+"/"+arrayName);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.