我有一个问题:
我有一个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;
}
}
}