我试图学习如何使用数组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膨胀
答案 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。
在这里,您可以存储字符串的索引并在以后请求它。