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