查找Array的ArrayList索引

时间:2016-04-27 08:09:11

标签: java android arrays arraylist

我试图学习如何使用数组ArrayList。我认为我对阵列的理解已经足够好了,但我还在努力解决下一个问题。

您可以从下面的代码中看到,我只是在测试这些概念。我已经将exampleArrayList工作了,但我无法弄清楚exampleArrayListofArrays。

public void exampleArrayList () {
        ArrayList<String> al = new ArrayList<String>();
        al.add("AZ");
        al.add("BY");
        al.add("CX");
        al.add("DW");
        al.add("EV");
        al.add("FU");
        al.add("GT");

        System.out.println("Index of 'AZ': "+al.indexOf("AZ"));
        System.out.println("Index of 'FU': " + al.indexOf("FU"));
        System.out.println("Index of 'AA': " + al.indexOf("AA"));
        System.out.println("Index of 'CX': " + al.indexOf("CX"));

        for (String row : al){
            System.out.println("Value at Index " + al.indexOf(row) + " is " + al.get(al.indexOf(row)));
        }
    }

    public void exampleArrayListofArray () {
        ArrayList<String []> al = new ArrayList<String []>();
        al.add(new String[] {"AB","YZ"});
        al.add(new String[] {"CD","WX"});
        al.add(new String[] {"EF","UV"});
        al.add(new String[] {"GH","ST"});
        al.add(new String[] {"IJ","QR"});
        al.add(new String[] {"KL","OP"});


        System.out.println("Index of 'AB': "+al.indexOf("AB"));
        System.out.println("Index of 'YZ': "+al.indexOf("YZ"));
        System.out.println("Index of 'AA': "+al.indexOf("AA"));
        System.out.println("Index of 'IJ': "+al.indexOf("IJ"));

        for (String [] row : al){
        for (int column = 0; column < 2 ; column ++);
        System.out.println("Value at Index Row" + row + "Column " 
          + column + " is " + al.get(al.indexOf(row)[column]));
        }
    }

我需要填写两个理解区域。

1)如何打印出两个字母的ArrayList索引和相应的Array索引。我似乎需要一个循环,但不确定如何继续。我也想知道这些字母何时不存在,例如&#34; AA&#34;我假设它将返回-1的索引。

此外,我希望能够打印出Array的整个ArrayList,并且由于某些原因我的println无法识别int列。

2)对于exampleArrayList方法,我尝试首先使用此代码打印出指定索引处的值:

System.out.println("Value at Index " + al.indexOf(row) + " is " + al.get(row));

我收到了一个错误:

  

&#39;获得(INT)&#39; in&#39; java.util.ArrayList&#39;无法应用   &#39;(java.lang.String中)&#39;

我不明白为什么。

感谢您对这些新手问题的帮助。

Airfix膨胀

3 个答案:

答案 0 :(得分:1)

al.indexOf(row)[column] returns a String.

get方法需要int。所以错误是显而易见的。

此外:

       for (String [] row : al){
        for (int column = 0; column < 2 ; column ++);
        System.out.println("Value at Index Row" + row + "Column " 
          + column + " is " + al.get(al.indexOf(row)[column])); // column here is not define!!!
        }

试试这个:

          for (String [] row : al)
            for (int column = 0; column < 2 ; column ++){
            System.out.println("Value at Index Row" + row + "Column " 
              + column + " is " + row[column]); 
            }

答案 1 :(得分:0)

可以使用row[column]

打印特定项目
for (String [] row : al){
    for (int column = 0; column < 2 ; column ++);
    System.out.println("Value at Index Row" + row + "Column " 
      + column + " is " + row[column]);
    }
}

因为你已经在外部for循环中的索引处获得了数组实例。现在,您可以使用列索引打印该数组中的值。

System.out.println("Value at Index " + al.indexOf(row) + " is " + al.get(row));

al.get(row)给出错误,因为ArrayList.get方法接受一个int值的索引。

希望这有帮助。

答案 2 :(得分:0)

Arrays和ArrayLists不适用于反向搜索。可以通过循环运行它们并测试所有值,但效率极低。相反,尝试使用HashMap。

在这里,您可以存储字符串的索引并在以后请求它。