【解決方法】Spring Bootで2つの配列間に存在するデータをループして比較するにはどうすればよいですか


両方ともデータを持つ 2 つの配列があります。私がやりたいのは、各配列をループして配列間のデータを比較することです。1 つの配列は Post メソッドから取得され、もう 1 つの配列にはデータベースからのデータがあるため、比較は次のように行う必要があります。更新するデータがデータベースに存在するかどうかを確認するために実行されます。存在しない場合は、新しいレコードとして挿入する必要があります。

私が試したこと:

以下は私のコードのスナップショットです

@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

}

解決策 1

Order がどのようなものであるかわからないため、この回答ではいくつかの仮定を立てます。 ここでの大前提は、クラス内に整数 ID 値があり、getId(); を使用して取得できるということです。 また、値が固定されていると仮定します。つまり、ID が適用されると完全に不変となり、それがデータベースに保存される値になります。

さて、本当にこのようにデータを取得する必要がある場合は、Java のフィルター機能を使用することを検討します。 このようなもの:

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

次に、これをループ内で次のように呼び出します

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

詳しい情報がなければ、より最適化された解決策を提供することはできません。

コメント

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