for (ListIterator<E> it = listIterator(); it.hasNext(); ) VS for (ListIterator<E> it = list.listIterator(); it.hasNext(); )
for (ListIterator<E> it = listIterator(); it.hasNext(); ) VS for (ListIterator<E> it = list.listIterator(); it.hasNext(); )
有人能告诉我,代码的 for (ListIterator<E> it = listIterator(); it.hasNext(); )
部分是否应该写成 for (ListIterator<E> it = list.listIterator(); it.hasNext(); )
其中 list
是对 ArrayList 或 LinkedList class?两种形式都可以接受并且正确吗?我应该在哪里使用一个而不是另一个?
public int indexOf(E e) {
for (ListIterator<E> it = listIterator(); it.hasNext(); )
if (e == null ? it.next() == null : e.equals(it.next()))
return it.previousIndex();
// Element not found
return -1;
}
for (ListIterator<E> it = listIterator(); it.hasNext(); )
此代码调用我自己 (this
) 的 listIterator()
并使用它的 return 值。编写此代码的 class 有更高的机会 List
被执行。
for (ListIterator<E> it = list.listIterator(); it.hasNext(); )
此代码调用存储在 list
中的实例引用的 listIterator()
并使用其 return 值。这段代码可能到处都会出现写套路
两者都可以,但是是否正确应该取决于你想做什么。
会是这样的:
import java.util.ListIterator;
import java.util.ArrayList;
public class TestIndexOf<E> extends ArrayList<E> {
private static final long serialVersionUID = 1L;
@Override
public int indexOf(Object e){
for(ListIterator<E> it = listIterator(); it.hasNext();)
if (e == null ? it.next() == null: e.equals(it.next()))
return it.previousIndex();
return -1;
}
public static void main(String[] args){
TestIndexOf<String> ti = new TestIndexOf<>();
ti.add("a");
ti.add("b");
ti.add("c");
ti.add("d");
System.out.format("The index of %s is %d\n", "b", ti.indexOf("b"));
}
}
有人能告诉我,代码的 for (ListIterator<E> it = listIterator(); it.hasNext(); )
部分是否应该写成 for (ListIterator<E> it = list.listIterator(); it.hasNext(); )
其中 list
是对 ArrayList 或 LinkedList class?两种形式都可以接受并且正确吗?我应该在哪里使用一个而不是另一个?
public int indexOf(E e) {
for (ListIterator<E> it = listIterator(); it.hasNext(); )
if (e == null ? it.next() == null : e.equals(it.next()))
return it.previousIndex();
// Element not found
return -1;
}
for (ListIterator<E> it = listIterator(); it.hasNext(); )
此代码调用我自己 (this
) 的 listIterator()
并使用它的 return 值。编写此代码的 class 有更高的机会 List
被执行。
for (ListIterator<E> it = list.listIterator(); it.hasNext(); )
此代码调用存储在 list
中的实例引用的 listIterator()
并使用其 return 值。这段代码可能到处都会出现写套路
两者都可以,但是是否正确应该取决于你想做什么。
会是这样的:
import java.util.ListIterator;
import java.util.ArrayList;
public class TestIndexOf<E> extends ArrayList<E> {
private static final long serialVersionUID = 1L;
@Override
public int indexOf(Object e){
for(ListIterator<E> it = listIterator(); it.hasNext();)
if (e == null ? it.next() == null: e.equals(it.next()))
return it.previousIndex();
return -1;
}
public static void main(String[] args){
TestIndexOf<String> ti = new TestIndexOf<>();
ti.add("a");
ti.add("b");
ti.add("c");
ti.add("d");
System.out.format("The index of %s is %d\n", "b", ti.indexOf("b"));
}
}