如何访问List的数组元素



我有一个问题:

我有一个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作为回报。我想知道在加载数组时如何访问列表中的字段。

我想要A的指数。

不,您无法获取它,因为它是数组中的一个元素。数组没有indexOf方法。列表具有该方法。

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

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

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

如果您正在查找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、重复项等的检查。。。

您想要这样做:

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");

在您的例子中,您有数组列表,而不是字符串列表。

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

如果你用indexOf检查列表中的String "A",它会返回-1,说,不,我没有那个元素。

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

 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

您的列表没有"A"。因此l.indexOf("A")将返回-1

"A"现在在哪里?

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);

输出:

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;
        }
    }
}