我如何访问List的数组元素

时间:2014-09-26 10:12:04

标签: java arrays list arraylist indexof

我有一个问题:

我有一个List Java,我用不同的值填充。例如,我有:

List<String[]> l = new ArrayList();
String[] lis = new String[3];
lis[0] = "A";
lis[1] = "B";
lis[2] = "C";
l.add(lis);

我也有其他价值观。 现在,我想在此列表中仅搜索第一个字段。例如,我想要A的indexOf。 我试着写这段代码:

int index = l.indexOf("A");

但是我得到-1作为回报。我想知道在加载数组时如何访问列表中的字段。

5 个答案:

答案 0 :(得分:3)

  

我想要A的indexOf。

不,你无法得到它,因为它是数组中的一个元素。 Array没有indexOf方法。列表有这种方法。

  

我想知道在加载数组时如何访问列表中的字段。

String firstElem= l.get(0)[0]; 

get(0)为您提供第一个插入的数组,[0]为您提供该数组中的第一个positiend元素。

如果您要在数组中查找A的位置,请使用l.get(0)从列表中访问数组并迭代您获得A位置的数组。

评论后更新:如果您不知道索引

for (int i = 0; i < l.size(); i++) {
        for (int j = 0; j < l.get(i).length; j++) {
            if( l.get(i)[j].equalsIgnoreCase("A")){
                return j;
            }
        }
    }

注意:请将其视为示例代码,并添加对null,duplicates等的检查...

答案 1 :(得分:0)

你想要这样做:

List<String> l = new ArrayList();
String[] lis = new String[3];
lis[0] = "A";
lis[1] = "B";
lis[2] = "C";
l.addAll(lis);

或者您根本不必使用数组

List<String> l = new ArrayList();    
l.add("A");
l.add("B");
l.add("C");

在您的情况下,您有数组列表,而不是字符串列表。

答案 2 :(得分:0)

在您l.add(lis);后,您的列表l只有只有一个元素:String[] lis不是数组的n个元素

你通过"A"检查列表中的字符串indexOf,它返回-1,说,不,我没有那个元素。

您可能需要检查Arrays.asList()方法,它会将数组转换为List。我想这就是你想要的。

答案 3 :(得分:0)

 List<String[]> l = new ArrayList<>();
 String[] lis = new String[3];
 lis[0] = "A";
 lis[1] = "B";
 lis[2] = "C";
 l.add(lis); //  now your list have only one element and it's index is 0

您列出的没有&#34; A&#34;。因此l.indexOf("A")将返回-1

&#34; A&#34;现在?

l.get(0)[0] // l.get(0) is lis array. Then 0th element of lis is A

如果您想以这种方式获得索引,可以使用

String[] lis = new String[3];
lis[0] = "A";
lis[1] = "B";
lis[2] = "C";        

int index= Arrays.asList(lis).indexOf("A");
System.out.println(index);

Out put:

0

答案 4 :(得分:0)

您的List包含字符串数组String[])。我认为你打算做的是创建一个List<String>

如果您真的需要List<String[]>,那么您的代码将如下所示:

for(int i = 0; i < list.size(); i++)
{
    String[] array = list.get(i);
    for(String s : array)
    {
        if("A".equals(s))
        {
            return i;
        }
    }
}