相关疑难解决方法(0)

如何最优雅地迭代并行集合?

假设我有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)

使用集合执行此操作的最优雅方式(在可读性和速度方面)是什么?

java collections

49
推荐指数
4
解决办法
2万
查看次数

Scala for循环遍历两个列表

我有一个List[Message]和一个List[Author]具有相同数量的项目,并且应该被排序,以便在每个索引处,Message来自Author.

我也有一个类,我们将在这里调用SmartMessage,带有两个参数的构造函数:a Message和相应的Author.

我想要做的是创建一个List[SmartMessage],结合2个简单列表的数据.

额外问题:是否List保留了Scala中的插入顺序?只是为了确保我创建List[Message]List[Author]使用相同的顺序.

scala scala-collections

32
推荐指数
1
解决办法
2万
查看次数

同时提供两个列表内容的迭代器?

假设我有这个:

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需要分开.

java generics iterator

27
推荐指数
2
解决办法
2万
查看次数

Java:如何编写`zip`函数?什么应该是返回类型?

什么应该是zip函数的返回类型?(zip与大多数其他语言一样,例如在这里阅读)

我想到了一些Pair类型,但在Java中并不存在.通常认为这是因为专门的Pair-class比一般的更好(参见这个问题).但是,这在一般zip功能中是不可能的.

java

8
推荐指数
1
解决办法
8677
查看次数

使用Java中的每个循环同时迭代两个数组

学生的名字(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)

一个简单的方法可能是在同一个循环中使用索引变量.有好办法吗?

java foreach

6
推荐指数
2
解决办法
2万
查看次数