Есть много способов сделать то, что вы хотите, лично я думаю, что самым простым является ArrayList< ArrayList < Course > >
Так, например, если вы хотите добавить возможный вариант требования, вы можете создать ArrayList
с курсами и подтолкнуть его к концу требований.
Позже, чтобы проверить это, просто запустите комбинации, сложность не должна быть проблемой, если у вас есть, например, 10 возможных требований с 10 курсами каждый, в худшем случае это будет цикл 10х10, 10² для компьютера - это так же, как ничего.
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html