मैं स्प्रिंग बूट में दो सरणियों के बीच मौजूद डेटा को कैसे लूप और तुलना कर सकता हूं


मेरे पास दो एरे हैं जिनमें दोनों में डेटा है, मैं जो करना चाहता हूं वह प्रत्येक एरे के माध्यम से लूप करना है और एरे के बीच डेटा की तुलना करना है एक एरे पोस्ट विधि से आ रहा है और दूसरे एरे में डेटाबेस से डेटा है, इसलिए तुलना होनी चाहिए यह जांचने के लिए किया जाता है कि डेटा अद्यतन करने के लिए डेटाबेस में मौजूद है या नहीं, अन्यथा इसे एक नए रिकॉर्ड के रूप में डाला जाना चाहिए।

मैंने क्या प्रयास किया है:

नीचे मेरा कोड स्नैपशॉट है

@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(); का उपयोग करके प्राप्त कर सकता हूं। मैं यह भी मानूंगा कि मान निश्चित है – दूसरे शब्दों में, एक बार आईडी लागू हो जाने के बाद, यह पूरी तरह से अपरिवर्तनीय है और यही वह मान है जिसे डेटाबेस में सहेजा जाएगा।

अब, यदि आपको वास्तव में अपना डेटा इस तरह प्राप्त करना है, तो मैं जावा में फ़िल्टर क्षमता का उपयोग करना चाहूँगा। कुछ इस तरह:

जावा
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をコピーしました