كيف يمكنني تكرار ومقارنة البيانات الموجودة بين صفيفين في التمهيد الربيعي


لدي صفيفين يحتوي كلاهما على بيانات، ما أريد القيام به هو التكرار خلال كل صفيف ومقارنة البيانات بين المصفوفات، حيث تأتي صفيف واحد من طريقة النشر وصفيف آخر يحتوي على بيانات من قاعدة البيانات، لذلك يجب أن تكون المقارنة تم القيام به للتحقق مما إذا كانت البيانات موجودة في قاعدة البيانات ليتم تحديثها وإلا فيجب إدراجها كسجل جديد.

ما حاولت:

فيما يلي لقطة الكود الخاصة بي

@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

نظرًا لأنني لا أعرف كيف يبدو الأمر، فسوف أقوم ببعض الافتراضات في هذه الإجابة. الافتراض الكبير الذي سأقوم به هو أن لديك قيمة معرف عدد صحيح في الفصل، والتي يمكنني الحصول عليها باستخدام getId();. سأفترض أيضًا أن القيمة ثابتة – بمعنى آخر، بمجرد تطبيق المعرف، يصبح غير قابل للتغيير تمامًا وهذه هي القيمة التي سيتم حفظها في قاعدة البيانات.

الآن، إذا كان عليك حقًا الحصول على بياناتك بهذه الطريقة، فأنا أتطلع إلى استخدام إمكانية التصفية في Java. شيء من هذا القبيل:

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

ثم يمكنك استدعاء هذا داخل حلقتك مثل هذا

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

وبدون مزيد من المعلومات، لا أستطيع حقًا أن أقدم لك حلاً أفضل.

コメント

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