基本的に、私は25人の異なる人を含む配列を持っています。同じ人の複製を使用せずに、これらの人から5人を選択し、すべての組み合わせを可能にする必要があります。
私がそれを行うことを考えることができる唯一の論理的な方法は、5つのforループを持ち、personがすでに使用されているかどうかを確認することですが、これはおそらく再帰を含むより良い方法があるようです。
誰かが助けてくれるなら、私はとても感謝しています。
これが私のクラスの例です。
public class Calculator {
final Person[] people = new Person[25]; //Pretend we have filled in this info already
public List<Group> generateList()
{
final List<Group> possible = new ArrayList<>();
for (int a = 0; a < 25; a++)
{
for (int b = 0; b < 25; b++)
{
for (int c = 0; c < 25; c++)
{
for (int d = 0; d < 25; d++)
{
for (int e = 0; e < 25; e++)
{
final Group next = new Group();
next.set = new Person[] {
people[a],
people[b],
people[c],
people[d],
people[e]
};
possible.add(next);
}
}
}
}
}
return possible;
}
class Group {
Person[] set = new Person[5];
}
class Person {
String name;
int age;
}
}
しかし、これを行うための最良の方法はわかりません。それがすべての組み合わせを取得するかどうかもわかりません。また、ここで重複チェックがないことも知っています。これは、チェックすることで行います。
if(b == a)続行;
等。
助けていただければ幸いです。