Здесь я сопоставляю инициалы кодов, таких как C***_Q***
:
CODES[] firstSet_Short = {CODES.CQ, CODES.AQ};
List<QUESTIONS> result = Arrays.stream(firstSet_Short)
.map(c -> Arrays.stream(QUESTIONS.values())
.filter(q -> q.toString().matches(c.toString().charAt(0) + ".+_" + c.toString().charAt(1) + ".+"))
.findFirst().orElse(null))
.collect(Collectors.toList()); //or .toArray(QUESTIONS[]::new); if you want array
System.out.println(result);
Выход
[CONTACT_QUESTION, ADDRESS_QUESTION]
Лучшим способом было бысохранить отображение в CODES
, например:
enum CODES {
CQ(QUESTIONS.CONTACT_QUESTION),
AQ(QUESTIONS.ADDRESS_QUESTION),
WQ(QUESTIONS.WORK_QUESTION);
private QUESTIONS question;
CODES(QUESTIONS question) {
this.question = question;
}
public QUESTIONS getQuestion() {
return question;
}
}
И тогда ваш код станет:
QUESTIONS[] result = Arrays.stream(firstSet_Short)
.map(CODES::getQuestion)
.toArray(QUESTIONS[]::new);