假设我有2个并行集合,例如:a中的人名List<String>列表以及a List<Int>中相同顺序的年龄列表(以便每个集合中的任何给定索引指向同一个人).
我想同时遍历这两个集合,并获取每个人的姓名和年龄,并用它做一些事情.使用数组,这很容易完成:
for (int i = 0; i < names.length; i++) {
do something with names[i] ....
do something with ages[i].....
}
Run Code Online (Sandbox Code Playgroud)
使用集合执行此操作的最优雅方式(在可读性和速度方面)是什么?
我有一个List[Message]和一个List[Author]具有相同数量的项目,并且应该被排序,以便在每个索引处,Message来自Author.
我也有一个类,我们将在这里调用SmartMessage,带有两个参数的构造函数:a Message和相应的Author.
我想要做的是创建一个List[SmartMessage],结合2个简单列表的数据.
额外问题:是否List保留了Scala中的插入顺序?只是为了确保我创建List[Message]和List[Author]使用相同的顺序.
假设我有这个:
public class Unit<MobileSuit, Pilot> {
...
List<MobileSuit> mobileSuits;
List<Pilot> pilots;
...
}
Run Code Online (Sandbox Code Playgroud)
我想以最简单的方式在该类之外迭代这对中的每一对.我应该怎么做呢?我想过这样做:
public class Unit<MobileSuit, Pilot> {
...
Iterator<MobileSuit> iteratinMechas;
Iterator<Pilot> iteratinPeople;
class IteratorCustom<MobileSuit, Pilot> implements Iterator {
public boolean hasNext() {
return iteratinMechas.hasNext() && iteratinPeople.hasNext();
}
public void remove() {
iteratinMechas.remove();
iteratinPeople.remove();
}
public Object next() {
// /!\
}
}
public Iterator iterator() {
return new IteratorCustom<MobileSuit, Pilot>(mobileSuits, pilots);
}
}
Run Code Online (Sandbox Code Playgroud)
沿着那条线的东西.
无论如何,问题是我不能真正从next()返回一个对象,而且我也不能让Iterator占用多个类型.那么,有什么想法吗?
另外,我不能组建一个新的课程来结合MobileSuit和Pilot.我需要将它们分开,即使我一次迭代它们.原因是可能有没有飞行员的移动套装,我不知道如何通过将它们保持在同一级别来解决这个问题.这个类需要在其他地方进行处理,所以我必须统一一个接口和其他很多东西.基本上,假设MobileSuit和Pilot需要分开.
学生的名字(String [])和相应的标记(int [])存储在不同的数组中.
我如何使用Java中的每个循环迭代两个数组?
void list() {
for(String s:studentNames) {
System.out.println(s); //I want to print from marks[] alongside.
}
}
Run Code Online (Sandbox Code Playgroud)
一个简单的方法可能是在同一个循环中使用索引变量.有好办法吗?