2011-11-04 54 views
2

伙计们我在使用java时有点新,而且我正在尝试编写一个程序,它将检查2d数组是否包含1d数组的值。第二个数组类似于数字列表,它将检查第一个数组是否匹配。在Java中将2d数组与1d进行比较

array1[6]= {"a","b","c","d","e","f"} 
array2[1][4]={{"a","b","c","d"}{"d","e","f","g"}} 
array2[0]= rowcomplete ; // because it contain all the value a,b,c,d 
array2[1]= incomplete; // because it only match d,e,f but not g 

这是我的代码:

String array1[] = {"a","b","c","d","e","f"}; 
String array2[][] = {{"a","b","c","d"}, {"d","e","f","g"}}; 

for (int 2row = 0; 2row < array2.length; 2row++) { 
    for (int 2column = 0;2column< array2[2row].length;2column++) {  
    for(int 1row=0; 1row < array1[1row].length();1row++) { 
     if (array2[2row][2column].equals(array1[1row])) { 
     System.out.println("complete"); 
     } 
     else{ 

     } 
    } 
    } 
} 
+6

为什么所有的变量都以数字开始?它不会编译。 –

+0

哦!对不起我的错误,也是array1 [] = {“a”,“b”,“c”,“d”,“e”,“f”}和array2 [] [] = {{“a” ,“c”,“d”} {“d”,“e”,“f”,“g”}} – user1030431

回答

3

一个简单的方法来做到这一点是使用Arrays类到您阵列转变成一个列表,并使用containsAll方法,像这样:

String array1 []={"a","b","c","d","e","f"}; 
    String array2 [][] ={{"a","b","c","d"},{"d","e","f","g"}}; 

    List<String> array1AsList = Arrays.asList(array1); 

    for (int i = 0; i < array2.length; i++) { 
     List<String> array2rowAsList = Arrays.asList(array2[i]); 

     if(array1AsList.containsAll(array2rowAsList)){ 
      System.out.println("row " + i + " is complete"); 
     } 
    } 
+0

哇!感谢它真的在工作 – user1030431

+0

很高兴有帮助:) –

+0

呵呵!非常感谢 – user1030431

2

只是为了澄清上述Banthar的评论暗示:

Java变量名不能以数字开头。他们只能以_underscore,letter或美元符号$开头。在第一个字母之后,您可以使用数字。

2

如果您为array1使用数组列表,这会更容易,因为您可以使用arrayList.contains()来确定该值是否在列表中。

使用数组列表并像以前一样声明/初始化array2,请尝试以下操作: ArrayList array1 = new ArrayList(); Collections.addAll(array1,“a”,“b”,“c”,“d”,“e”,“f”);
boolean matchFlag;

for(int i = 0;i< array2.length; i++){ 
    matchFlag = true; 
    for(int j=0;j<array2[i].length; j++){ 
     if(array1.contains(array2[i][j]) == false){ 
      //found string that did not match 
      // 
      matchFlag = false; 
     } 
    } 
    if(matchFlag){ 
     //complete array 
    } 
} 

希望这有助于!

+0

旧金山打败了我:( –

+0

对不起:P你会击败我下次:) –

+0

你仍然得到一票。 – Mob

0

您还可以使用满足Arrays.equals

String array1[] = {"a","b","c","d","e","f"}; 
String array2[][] = {{"a","b","c","d"}, {"d","e","f","g"}}; 

for (int i = 0; i < array2.length; i++) { 
    if(java.util.Arrays.equals(array1, array2[i]) { 
     ... 
    } 
} 
相关问题