I need to check if all Strings from ArrayList are present in another ArrayList. I can use containsAll but this is not what I want to achieve. Let's me show you this on example:
assertThat(firstArray).containsAll(secondArray); This code will check if all items from one array is in another one. But I need to check that every single item from one array is contained in any place in the second array.
List<String> firstArray = new ArrayList<>; List<String> secondArray = new ArrayList<>; firstArray.add("Bari 1908") firstArray.add("Sheffield United") firstArray.add("Crystal Palace") secondArray.add("Bari") secondArray.add("Sheffield U") secondArray.add("C Palace") So I want to check if first item from secondArray is in firstArray(true) than that second(true) and third(false). I wrote the code which is doing this job but it's quite complicated and I would like to know if there is any simpler way to achieve this goal (maybe with using hamcrest matchers or something like that)
ArrayList<String> notMatchedTeam = new ArrayList<>(); for (int i = 0; i < secondArray.size(); i++) { String team = secondArray.get(i); boolean teamMatched = false; for (int j = 0; j < firstArray.size(); j++) { teamMatched = firstArray.get(j).contains(team); if (teamMatched) { break; } } if (!teamMatched) { notMatchedTeam.add(team); } }
secondArrayis a substring of some string infirstArray?streamsand restructure your code.streamsand refactoring can be best way. At most, I leave code like it is right now.