Olá, tenho um método abaixo que funciona bem.
Mas preciso fazer com que ele me retorne quais valores não encontrou na comparação de arrays.
Por exemplo, abaixo o “PALIO” e “CELTA” não existem no array word, então no retorno, caso o array seja diferente, preciso que me retorne algo do tipo: System.out.println("Carros" + "carros diferentes" + "são diferentes!");
Para obter os elementos de chave que não estão em word, você pode converter os arrays para java.util.Set, que possui operações que facilitam a tarefa:
String[] chave = {"GOL", "CORSA", "PALIO", "CELTA"};
String[] word = {"GOL", "CORSA"};
// transforma os arrays em Set
Set<String> chaves = new HashSet<>(Arrays.asList(chave));
Set<String> words = new HashSet<>(Arrays.asList(word));
// remove os elementos que estão em "words" (no caso, GOL e CORSA)
chaves.removeAll(words);
// o que sobrar são os elementos de "chaves" que não estão em "words"
System.out.println("Carros: " + String.join(", ", chaves) + " são diferentes");
Claro que você poderia fazer vários loops para verificar se cada elemento de chave está em word, mas Set's são mais eficientes para este tipo de busca. Claro que tem o custo inicial de criar o Set, mas se for para manipular muitos arrays com vários elementos, pode compensar bastante.
Lembrando que HashSet não garante que a ordem dos elementos é preservada. Se a ordem é importante, basta trocar para LinkedHashSet:
Set<String> chaves = new LinkedHashSet<>(Arrays.asList(chave));
Set<String> words = new LinkedHashSet<>(Arrays.asList(word));
Obs: a partir do Java 9 você pode usar Set.of:
Set<String> chaves = Set.of(chave);
Set<String> words = Set.of(word);
Mas assim como HashSet, ele não garante a ordem dos elementos (se for para garantir a ordem, teria que usar LinkedHashSet mesmo).