Java 使用增强的for循环搜索LinkedList

Java 使用增强的for循环搜索LinkedList,java,for-loop,linked-list,Java,For Loop,Linked List,所以我试图用一个增强的for循环替换for循环,但我无法让它工作,问题是它确实在搜索,当它找到我要找的名称时,它返回INX-1。使用normal for循环,它返回正确的索引。n是传递给方法的字符串,array是linkedlist boolean found= false; for(O o: array) { if(o.getString().equals(n)) { System.out.println("\n"+n+ " is found a

所以我试图用一个增强的for循环替换for循环,但我无法让它工作,问题是它确实在搜索,当它找到我要找的名称时,它返回INX-1。使用normal for循环,它返回正确的索引。n是传递给方法的字符串,array是linkedlist

boolean found= false;
    for(O o: array) {
        if(o.getString().equals(n)) {
            System.out.println("\n"+n+ " is found at position " +array.indexOf(name)+"\n");
            found = true;
        }
    }

    for (int i = 0; i<array.size();i++) {
        if((array.get(i).getString()).equals(n)) {
            System.out.println("\n"+n+ " is found at position " +i+"\n");
            found = true;
        }
    }
boolean-found=false;
for(O:array){
如果(o.getString().equals(n)){
System.out.println(“\n”+n+”位于“+array.indexOf(name)+“\n”)位置;
发现=真;
}
}

对于(inti=0;i你应该使用数组。indexOf(o)

索引是有点间接的,因为
indexOf
需要整个o对象;
可选的
更容易。
array.indexOf(n)
应该是
array.indexOf(o)

Optional foundO=array.stream().findAny(o->n.equals(o.getString());
int index=foundO.mapToInt(o->array.indexOf(o)).orElse(-1);
System.out.println(“\n”+n+”位于位置“+index+”\n”);

正如您所见,较新的Stream API不再需要某些for/forEach循环。

如果您需要索引,请不要使用增强的for循环。@Eran啊,您是说这是不可能的,或者说这只是浪费时间。在这种情况下,试图找出它,您始终可以添加一个int变量来跟踪当前索引,但在d中没有意义这样做,因为常规for循环已经为您提供了索引。请注意,使用
indexOf
将再次执行搜索。另外,
name
从何而来?您正在查找
n
!@realponsign对不起,name是n我刚才键入的是速记
Optional<O> foundO = array.stream().findAny(o-> n.equals(o.getString()));
int index = foundO.mapToInt(o -> array.indexOf(o)).orElse(-1);

System.out.println("\n"+n+ " is found at position " +index+"\n");