Java 在列表中迭代,直到找到一个特定的字符串并说出行号?

Java 在列表中迭代,直到找到一个特定的字符串并说出行号?,java,Java,下面是我的列表示例: List<String> l2 = new ArrayList<String>(); l2.add("Apple"); l2.add("Kiwi"); l2.add("Orange"); List l2=new ArrayList(); l2.添加(“苹果”); l2.添加(“猕猴桃”); l2.添加(“橙色”); 所以基本上我想遍历这个列表,直到它找到例如“Orange”,然后它将返回一个行号(本例中为3)。但我真的不知道该怎么做。有人能帮我吗

下面是我的列表示例:

List<String> l2 = new ArrayList<String>();
l2.add("Apple");
l2.add("Kiwi");
l2.add("Orange");
List l2=new ArrayList();
l2.添加(“苹果”);
l2.添加(“猕猴桃”);
l2.添加(“橙色”);

所以基本上我想遍历这个列表,直到它找到例如“Orange”,然后它将返回一个行号(本例中为3)。但我真的不知道该怎么做。有人能帮我吗

迭代列表时,有很多方法可以做到这一点。下面是一个例子:

int i = 0;
for( String s : l2){
    if(s.equals("Orange")) System.out.println(i);
    i++;
}

您需要一个for循环来遍历任何数组或列表。在本例中,作为一个数组列表,您将使用以下for循环对其进行迭代

for(int x = 0; x < l2.size();x++){
    if(l2.get(x).equals("Orange")){
      // this is where the code will end up when it selects Orange
    }
}
for(int x=0;x

l2.size()。
if
语句在
equals
参数中的ArrayList中找到文本后将立即停止,如果此时要添加、删除或执行某些操作,则应将代码放在此处。

进行了一些研究,找到了一种更简单的方法: int indexOf(对象o)
返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1。

到目前为止您尝试了什么?您当前的预期输出可以通过使用indexOfIt来实现,它听起来很像一个简单的
列表。indexOf(objecto)+1
。如果您的列表已排序,您可以编写一个更快的搜索,如二进制搜索您想打印代码的行号还是列表中“橙色”的索引?对于行号,您可以使用
newexception().getStackTrace()[0].getLineNumber()
这将打印列表中“橙色”的索引,而不一定是行号
l2。添加(“橙色”)
是我不相信OP要求的。如果我弄错了,请更正。
foreach
不是有效的关键字,它为每个循环调用一个,但为
关键字使用相同的
。还要注意的是,这是对for-each循环的错误使用,在这个循环中应该只使用普通for循环case@peggy如果OP查找的是文字程序行号,则预期结果将是4(或更大-一旦您包含此代码所在的类)而不是3,因为OP为每个循环提供了一个干净且隐藏迭代器的设计。如果要使用索引,更常见的做法是使用索引for循环。总的来说,使用for-each循环意味着您不关心indexIt,只需使用
List.indexOf(Object o)
就可以轻松得多。在这种情况下,它将是
intindex=l2.indexOf(“橙色”)谢谢,我不知道。@phflack实际上在10分钟前的一篇评论中提供了这一点,但很高兴你无论如何都弄明白了。@DoubleDouble将其作为一个答案,以便于查看。我没有看到他的评论。@DoubleDouble实际上是luk2302建议的。@Lankymart感谢您的澄清。我确实认为,无论是谁因为“其他人优先”而对答案投了反对票都是相当荒谬的,我或多或少只是想指出,有时候人们应该注意这些评论。。如果他们真的想得到答案,他们会把它作为答案贴出来。