2014-10-18 49 views
0

我试图获得ArrayList s的基础知识,但我无法使lastIndexOf方法正常工作。正如你可以在下面的代码中看到的,程序运行时应该打印“1”,即数字3的索引,但是打印“-1”(只有在ArrayList中不存在3时才打印)。我的问题是什么?当ArrayList存在于ArrayList中时ArrayList方法“lastIndexOf”返回-1

import java.util.ArrayList; 
public class Pile { 
    public static void main(String[] args) 
    { 
     int[] myArray = {1,3,23,4}; 
     ArrayList<Integer> myList = new ArrayList<Integer>(); 
     for (int i=0;i<myArray.length;i++) { 
      myList.add(myArray[0]); 
     } 
     System.out.println(myList.lastIndexOf(3)); 
    } 
} 
+4

请不要在你的问题中加入代码截图。将代码复制并粘贴为文本更好。 – Eran 2014-10-18 03:48:23

回答

3

你只需要添加的myArray的第一个元素myList

此时应更换

myList.add(myArray[0]); 

与此

myList.add(myArray[i]); 

此外,而不是手动复制的元素,你可以使用Arrays#asList(但你需要改变的myArrayInteger[]类型):

List<Integer> myList = Arrays.asList(myArray); 
+0

哇,我是个白痴。非常感谢! – 2014-10-18 03:48:33

+2

在一个int数组上使用Arrays.asList会导致List ,所以它甚至不会编译。 – Eran 2014-10-18 03:53:49

2

您只是将数组的第一个元素多次添加到列表中。

myList.add(myArray[0]); 

这就是为什么你的列表中不包含3

将其更改为

myList.add(myArray[i]);