Вы используете метод contains () для поиска совпадающих полей. DataTwo.getField1 (). Contains (DataOne.getFieldA ()) ---> "field1" .contains ("fieldA") -> возвращает "false", поскольку "field1" не содержит "fieldA". Но если DataTwo.field1 был чем-то вроде «fieldAekstra», тогда DataTwo.getField1 (). Contains (DataOne.getFieldA ()) -> вернет true, потому что «fieldAekstra» содержит одно «fieldA».
Пример ниже работает правильно и выводит «Соответствие найдено». Я только что исправил несколько опечаток. В целом ваш код работает, просто в элементах вашего примера списка не было совпадающих строк.
List<DataOne> dol = new ArrayList<>();
dol.add(new DataOne("fieldA", "fieldB", "fieldC"));
dol.add(new DataOne("fieldD", "fieldF", "fieldH"));
dol.add(new DataOne("fieldK", "fieldM", "fieldN"));
List<DataTwo> dtl = new ArrayList<>();
dtl.add(new DataTwo("fieldAEkstra", "fieldBEkstra", "fieldCEkstra"));
dtl.add(new DataTwo("fieldDEkstra", "fieldFEkstra", "fieldHEkstra"));
dtl.add(new DataTwo("fieldTEkstra", "fieldOEkstra", "fieldWEkstra"));
/*dtl.add(new DataTwo("field1", "field2", "field3"));
dtl.add(new DataTwo("field4", "field5", "field6"));
dtl.add(new DataTwo("field7", "field8", "field9")); */
boolean cc = dol.parallelStream()
.filter(Objects::nonNull)
.filter(a -> a.getFieldA() != null && a.getFieldB() != null && a.getFieldC() != null)
.anyMatch(a ->
dtl.parallelStream()
.filter(Objects::nonNull)
.filter(b -> b.getField1() != null && b.getField2() != null && b.getField3() != null)
.anyMatch(b -> b.getField1().contains(a.getFieldA())));
if(cc)
System.out.println("Match found!");
else
System.out.println("No Match !");
Вывод:
Match found!