У меня есть случай использования, когда мне нужно найти объект с наилучшим соответствием из списка данного объекта на основе параметров объекта
У меня есть объект в качестве Входных данных в java
например
TestBestMatchModel("VERIFICATION", "6", "13", "15");
есть список входных объектов -
List<InputObject> list = new ArrayList<>();
, который содержит некоторые объекты, такие как: -
TestBestMatchModel testBestMatchModel = new TestBestMatchModel("VERIFICATION",
"6", "99999", "999999");
TestBestMatchModel testBestMatchModel1 = new TestBestMatchModel("VERIFICATION",
"6", "13", "999999");
TestBestMatchModel testBestMatchModel2 = new TestBestMatchModel("VERIFICATION",
"6", "2", "999999");
TestBestMatchModel testBestMatchModel3 = new TestBestMatchModel("VERIFICATION",
"6", "213", "9");
TestBestMatchModel testBestMatchModel4 = new TestBestMatchModel("VERIFICATION",
"6", "113", "999999");
TestBestMatchModel testBestMatchModel5 = new TestBestMatchModel("VERIFICATION",
"6", "13", "9");
Поэтому я использую потоковый метод, такой как
TestBestMatchModel result = test.stream()
.filter(model -> model.getTransformation().equals("VERIFICATION")).max(
Comparator.comparing(
model -> model.getLanguageID().equals("6")
&& model.getVerticalID().equals("13")
&& model.getDeviceID().equals("15")
)).orElse(null);
и я ожидаю, что результат будет - testBestMatchModel5
, но вместо этого я получаю значение "testBestMatchModel" в результате
result is TestBestMatchModel{transformation='VERIFICATION', deviceID='999999', verticalID='99999', languageID='6'}
Так что же такоелучший способ получить «наиболее подходящий» объект из списка объектов.