Comment puis-je boucler et comparer les données présentes entre deux tableaux au Spring Boot

la programmation


J’ai deux tableaux qui contiennent tous deux des données, ce que je veux faire est de parcourir chaque tableau et de comparer les données entre les tableaux, un tableau provient de la méthode Post et un autre tableau contient des données de la base de données, la comparaison doit donc être effectué pour vérifier si les données sont présentes dans la base de données à mettre à jour, sinon elles doivent être insérées en tant que nouvel enregistrement.

Ce que j’ai essayé :

Ci-dessous mon instantané de code

@Autowired
private OrderRepository orderRepository; 


public void process_data(String ordercode, List<Order> order) {
                
List<Order> orderList = new ArrayList<>(); 
List<Order> orderData = orderRepository.findOrder(ordercode);

// here is where I want to compare the data between two array lists of order and orderData
   using a for loop

for(var data : order) {  // here is only one array present how can I add the second array list so that I can compare the data present between the two array lists

}

Solution 1

Comme je ne sais pas à quoi ressemble Order, je vais faire quelques hypothèses dans cette réponse. La grande hypothèse que je vais faire est que vous avez une valeur d’identifiant entier dans la classe, que je peux obtenir en utilisant getId();. Je vais également supposer que la valeur est fixe – en d’autres termes, une fois l’identifiant appliqué, il est complètement immuable et c’est la valeur qui serait enregistrée dans la base de données.

Maintenant, si vous devez vraiment obtenir vos données de cette manière, je chercherais à utiliser la capacité de filtrage de Java. Quelque chose comme ça:

Java
private Optional<Order> findOrder(List<Order> orders, Order order) {
  return orders.stream().filter(f -> f.getId() == order.getId()).findAny();
}

Ensuite, vous appelleriez cela dans votre boucle comme ceci

Java
Optional<Order> foundOrder = findOrder(orderData, data);
if (foundData.isPresent()) {
  // Do whatever you need to with this missing record.
}

Sans plus d’informations, je ne peux pas vraiment vous proposer une solution plus optimisée.

コメント

タイトルとURLをコピーしました