在Java中,如何同时遍历两个列表?
例如 假设我们确定在Java中,如何同时遍历两个列表?,java,Java,例如 假设我们确定list1.size()等于list2.size(),如何在一个语句中遍历这两个列表 可能类似于(字符串str1:list1,str2:list2)?使用基本循环 for(String str : list1) { ... } for(String str : list2) { ... } for(int index=0;index
list1.size()
等于list2.size()
,如何在一个语句中遍历这两个列表
可能类似于(字符串str1:list1,str2:list2)
?使用基本循环
for(String str : list1) {
...
}
for(String str : list2) {
...
}
for(int index=0;index
增强的for
循环不能同时遍历两个列表;您必须使用传统的for
循环对其进行迭代:
for(int index=0; index < list1.size() ; index++){
list1.get(index);
list2.get(index);
}
for(int i=0;i
for(int i=0;i
您可以使用:
Iterator it1=list1.Iterator();
迭代器it2=list2.Iterator();
而(it1.hasNext()&&it2.hasNext()){..}
或:
for(迭代器it1=…it2..;it1.hasNext()&&it2.hasNext();){…}
正如您所说,两个列表的大小相同,那么您可以使用“for”循环而不是“for each”循环。您可以使用list的get(int-index)方法在每次迭代期间获取值。如果有人感兴趣,这是一种解决方案,它将在两个列表中完全迭代,即使它们的大小不同
for(Iterator<String> it1 = ... it2..; it1.hasNext() && it2.hasNext();) {...}
int max=Math.max(list1.size(),list2.size());
对于(int i=0;当列表的长度不同时,您希望发生什么?我认为在Java中没有人遇到过无限集合;)这是一个很好的解决方案,除了OP需要一个for
statement.for(迭代器i1=one.Iterator(),i2=two.Iterator();i1.hasNext()&&i2.hasNext();){…}要完成:将其.next()添加到循环中,如果一个迭代器还有剩余项,则添加一条消息。为了安全起见,首选count代替list1.size(),并将count计算为Math.min(list1.size(),list2.size())。在使用LinkedList
s时不应使用此方法。每次迭代,get
方法将从列表的开始到当前元素进行迭代,这将导致O(n²)渐近性能。在使用链表时,强烈建议使用迭代器。为了安全起见,建议使用count代替list1.size(),并将count计算为Math.min(list1.size(),list2.size())。确实,这是避免出现索引自动边界异常的一个好方法,但OP已经声明了一个先决条件是:“我们确信,list1.size()
等于list2.size()
”为了安全起见,我们已经选择使用count代替list1.size(),并将count计算为Math.min(list1.size(),list2.size())。
for(int i = 0; i< list1.size(); i++){
String str1 = list1.get(i);
String str2 = list2.get(i);
//do stuff
}
Iterator<String> it1 = list1.iterator();
Iterator<String> it2 = list2.iterator();
while(it1.hasNext() && it2.hasNext()) { .. }
for(Iterator<String> it1 = ... it2..; it1.hasNext() && it2.hasNext();) {...}
int max = Math.max(list1.size(), list2.size());
for(int i=0; i<max; ++i){
if(list1.size()<i){
list1.get(i);
}
if(list2.size()<i){
list2.get(i);
}
}
int index = 0;
for(String str1 : list1) {
str2 = list2.get(index++);
}