簡體   English   中英

java多字符串數組比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM