Jim*_*Jim 6 java iteration list arraylist
假设我有一个List<SomeObject> a.
现在还假设我有另一个List<SomeProcessor> b.
每一个SomeProcessor使用a它的处理.
除了:
int idx = 0;
for(SomeProcessor o:b){
o2 = a.get(idx);
o.doSomething(o2);
idx++;
}
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式来处理这个问题吗?
public interface Processor<T> {
public void process(T object);
}
Run Code Online (Sandbox Code Playgroud)
然后是辅助方法:
public static <T> void processAll(Collection<T> items, Collection<? extends Processor<T>> processors) {
Iterator<T> i = items.iterator();
Iterator<? extends Processor<T>> p = processors.iterator();
while(i.hasNext() && p.hasNext())
p.next().process(i.next());
}
Run Code Online (Sandbox Code Playgroud)
您可以将该帮助器方法放在使用它的类上,如果只有一个(并使其成为private),或者将它放在由整个程序共享的实用程序类中.
当然还有其他编码方式processAll; 例如,您可以for在其中一个集合上使用循环.但无论如何,将这种低级代码分解为辅助方法将使您的高级代码更清晰,更少"嘈杂".如果你在程序的多个部分做类似的事情,他们可以共享帮助方法.